buffer overrun : Refactoring
This commit is contained in:
parent
7301709699
commit
37e8019230
|
@ -400,18 +400,12 @@ void CheckBufferOverrunClass::CheckBufferOverrun_LocalVariable()
|
||||||
|
|
||||||
void CheckBufferOverrunClass::CheckBufferOverrun_StructVariable()
|
void CheckBufferOverrunClass::CheckBufferOverrun_StructVariable()
|
||||||
{
|
{
|
||||||
const char *declstruct_pattern[] = {"","","{",0};
|
const char declstruct[] = "struct|class %var% {";
|
||||||
for ( const TOKEN * tok = TOKEN::findtoken( _tokenizer->tokens(), declstruct_pattern );
|
for ( const TOKEN * tok = TOKEN::findmatch( _tokenizer->tokens(), declstruct );
|
||||||
tok;
|
tok;
|
||||||
tok = TOKEN::findtoken( tok->next(), declstruct_pattern ) )
|
tok = TOKEN::findmatch( tok->next(), declstruct ) )
|
||||||
{
|
{
|
||||||
if ( ! TOKEN::Match(tok,"struct|class") )
|
const std::string &structname = tok->next()->str();
|
||||||
continue;
|
|
||||||
|
|
||||||
const char *structname = tok->next()->aaaa();
|
|
||||||
|
|
||||||
if ( !(tok->next()->isName()) )
|
|
||||||
continue;
|
|
||||||
|
|
||||||
// Found a struct declaration. Search for arrays..
|
// Found a struct declaration. Search for arrays..
|
||||||
for ( const TOKEN * tok2 = tok->next()->next(); tok2; tok2 = tok2->next() )
|
for ( const TOKEN * tok2 = tok->next()->next(); tok2; tok2 = tok2->next() )
|
||||||
|
@ -442,7 +436,7 @@ void CheckBufferOverrunClass::CheckBufferOverrun_StructVariable()
|
||||||
// Class member variable => Check functions
|
// Class member variable => Check functions
|
||||||
if ( TOKEN::Match(tok, "class") )
|
if ( TOKEN::Match(tok, "class") )
|
||||||
{
|
{
|
||||||
std::string func_pattern(structname + std::string(" :: %var% ("));
|
std::string func_pattern(structname + " :: %var% (");
|
||||||
const TOKEN *tok3 = TOKEN::findmatch(_tokenizer->tokens(), func_pattern.c_str());
|
const TOKEN *tok3 = TOKEN::findmatch(_tokenizer->tokens(), func_pattern.c_str());
|
||||||
while ( tok3 )
|
while ( tok3 )
|
||||||
{
|
{
|
||||||
|
@ -464,7 +458,7 @@ void CheckBufferOverrunClass::CheckBufferOverrun_StructVariable()
|
||||||
|
|
||||||
for ( const TOKEN *tok3 = _tokenizer->tokens(); tok3; tok3 = tok3->next() )
|
for ( const TOKEN *tok3 = _tokenizer->tokens(); tok3; tok3 = tok3->next() )
|
||||||
{
|
{
|
||||||
if ( strcmp(tok3->aaaa(), structname) )
|
if ( tok3->str() != structname )
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
// Declare variable: Fred fred1;
|
// Declare variable: Fred fred1;
|
||||||
|
|
Loading…
Reference in New Issue