Cppcheck
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Public Member Functions | Private Member Functions | Static Private Member Functions | Private Attributes | List of all members
ExecutionPathBufferOverrun Class Reference

Check for buffer overruns (using ExecutionPath) More...

Inheritance diagram for ExecutionPathBufferOverrun:
ExecutionPath

Public Member Functions

 ExecutionPathBufferOverrun (Check *c, const std::map< unsigned int, CheckBufferOverrun::ArrayInfo > &arrayinfo)
 Startup constructor. More...
 
- Public Member Functions inherited from ExecutionPath
 ExecutionPath (Check *c, unsigned int id)
 
virtual ~ExecutionPath ()
 
void print () const
 print checkdata More...
 
virtual bool parseCondition (const Token &tok, std::list< ExecutionPath * > &checks)
 Parse condition. More...
 
virtual void parseLoopBody (const Token *tok, std::list< ExecutionPath * > &checks) const
 Parse loop body. More...
 
virtual void end (const std::list< ExecutionPath * > &, const Token *) const
 going out of scope - all execution paths end More...
 
bool operator== (const ExecutionPath &e) const
 

Private Member Functions

ExecutionPathcopy ()
 Copy this check. More...
 
bool is_equal (const ExecutionPath *e) const
 is other execution path equal? More...
 
void operator= (const ExecutionPathBufferOverrun &)
 no implementation => compiler error if used by accident More...
 
 ExecutionPathBufferOverrun (Check *c, const std::map< unsigned int, CheckBufferOverrun::ArrayInfo > &arrayinfo, unsigned int varid_)
 internal constructor for creating extra checks More...
 
const Tokenparse (const Token &tok, std::list< ExecutionPath * > &checks) const
 Parse tokens at given location. More...
 

Static Private Member Functions

static void assign_value (std::list< ExecutionPath * > &checks, unsigned int varid, const std::string &value)
 Assign value to a variable. More...
 
static void array_index (const Token *tok, std::list< ExecutionPath * > &checks, unsigned int varid1, unsigned int varid2)
 Found array usage, analyse the array usage. More...
 

Private Attributes

const std::map< unsigned int,
CheckBufferOverrun::ArrayInfo > & 
arrayInfo
 Buffer information. More...
 
MathLib::bigint value
 Variable value. More...
 

Additional Inherited Members

- Static Public Member Functions inherited from ExecutionPath
static void bailOut (std::list< ExecutionPath * > &checks)
 bail out all execution paths More...
 
static void bailOutVar (std::list< ExecutionPath * > &checks, const unsigned int varid)
 bail out execution paths with given variable id More...
 
static void checkScope (const Token *tok, std::list< ExecutionPath * > &checks)
 
- Public Attributes inherited from ExecutionPath
unsigned int numberOfIf
 number of if blocks More...
 
const unsigned int varId
 
- Protected Attributes inherited from ExecutionPath
Check *const owner
 

Detailed Description

Check for buffer overruns (using ExecutionPath)

Definition at line 2027 of file checkbufferoverrun.cpp.

Constructor & Destructor Documentation

ExecutionPathBufferOverrun::ExecutionPathBufferOverrun ( Check c,
const std::map< unsigned int, CheckBufferOverrun::ArrayInfo > &  arrayinfo 
)
inline

Startup constructor.

Definition at line 2030 of file checkbufferoverrun.cpp.

ExecutionPathBufferOverrun::ExecutionPathBufferOverrun ( Check c,
const std::map< unsigned int, CheckBufferOverrun::ArrayInfo > &  arrayinfo,
unsigned int  varid_ 
)
inlineprivate

internal constructor for creating extra checks

Definition at line 2053 of file checkbufferoverrun.cpp.

Member Function Documentation

static void ExecutionPathBufferOverrun::array_index ( const Token tok,
std::list< ExecutionPath * > &  checks,
unsigned int  varid1,
unsigned int  varid2 
)
inlinestaticprivate

Found array usage, analyse the array usage.

Parameters
toktoken where usage occurs (only used when reporting the error)
checksThe execution paths
varid1variable id for the array
varid2variable id for the index

Definition at line 2087 of file checkbufferoverrun.cpp.

References CheckBufferOverrun::arrayIndexOutOfBoundsError(), arrayInfo, CheckBufferOverrun::ArrayInfo::num(), ExecutionPath::owner, value, and ExecutionPath::varId.

static void ExecutionPathBufferOverrun::assign_value ( std::list< ExecutionPath * > &  checks,
unsigned int  varid,
const std::string &  value 
)
inlinestaticprivate

Assign value to a variable.

Parameters
checksthe execution paths
varidthe variable id
valuethe assigned value

Definition at line 2068 of file checkbufferoverrun.cpp.

References MathLib::toLongNumber(), value, and ExecutionPath::varId.

ExecutionPath* ExecutionPathBufferOverrun::copy ( )
inlineprivatevirtual

Copy this check.

Called from the ExecutionPath baseclass.

Implements ExecutionPath.

Definition at line 2036 of file checkbufferoverrun.cpp.

bool ExecutionPathBufferOverrun::is_equal ( const ExecutionPath e) const
inlineprivatevirtual

is other execution path equal?

Implements ExecutionPath.

Definition at line 2041 of file checkbufferoverrun.cpp.

References value.

void ExecutionPathBufferOverrun::operator= ( const ExecutionPathBufferOverrun )
private

no implementation => compiler error if used by accident

const Token* ExecutionPathBufferOverrun::parse ( const Token tok,
std::list< ExecutionPath * > &  checks 
) const
inlineprivatevirtual

Parse tokens at given location.

Parameters
toktoken to parse
checksThe execution paths. All execution paths in the list are executed in the current scope.
Returns
the token before the "next" token.

Implements ExecutionPath.

Definition at line 2118 of file checkbufferoverrun.cpp.

References Token::Match(), Token::next(), Token::previous(), Token::strAt(), Token::tokAt(), and Token::varId().

Member Data Documentation

const std::map<unsigned int, CheckBufferOverrun::ArrayInfo>& ExecutionPathBufferOverrun::arrayInfo
private

Buffer information.

Definition at line 2047 of file checkbufferoverrun.cpp.

Referenced by array_index().

MathLib::bigint ExecutionPathBufferOverrun::value
private

Variable value.

Definition at line 2060 of file checkbufferoverrun.cpp.

Referenced by array_index(), assign_value(), and is_equal().


The documentation for this class was generated from the following file: