Cppcheck
Functions | Variables
bughuntingchecks.cpp File Reference
#include "bughuntingchecks.h"
#include "astutils.h"
#include "errorlogger.h"
#include "errortypes.h"
#include "library.h"
#include "mathlib.h"
#include "settings.h"
#include "symboldatabase.h"
#include "token.h"
#include "utils.h"
#include "valueflow.h"
#include <algorithm>
#include <cstring>
#include <list>
#include <map>
#include <memory>
#include <string>
#include <utility>

Go to the source code of this file.

Functions

static float getKnownFloatValue (const Token *tok, float def)
 
static bool isLessThan (ExprEngine::DataBase *dataBase, ExprEngine::ValuePtr lhs, ExprEngine::ValuePtr rhs)
 
static void arrayIndex (const Token *tok, const ExprEngine::Value &value, ExprEngine::DataBase *dataBase)
 
static void bufferOverflow (const Token *tok, const ExprEngine::Value &value, ExprEngine::DataBase *dataBase)
 
static void divByZero (const Token *tok, const ExprEngine::Value &value, ExprEngine::DataBase *dataBase)
 
static bool isVariableAssigned (const Variable *var, const Token *tok, const Token *scopeStart=nullptr)
 check if variable is unconditionally assigned More...
 
static void uninit (const Token *tok, const ExprEngine::Value &value, ExprEngine::DataBase *dataBase)
 
static void checkFunctionCall (const Token *tok, const ExprEngine::Value &value, ExprEngine::DataBase *dataBase)
 
static void checkAssignment (const Token *tok, const ExprEngine::Value &value, ExprEngine::DataBase *dataBase)
 
void addBughuntingChecks (std::vector< ExprEngine::Callback > *callbacks)
 

Variables

static const CWE CWE_BUFFER_UNDERRUN (786U)
 
static const CWE CWE_BUFFER_OVERRUN (788U)
 

Function Documentation

◆ addBughuntingChecks()

void addBughuntingChecks ( std::vector< ExprEngine::Callback > *  callbacks)

◆ arrayIndex()

static void arrayIndex ( const Token tok,
const ExprEngine::Value value,
ExprEngine::DataBase dataBase 
)
static

◆ bufferOverflow()

static void bufferOverflow ( const Token tok,
const ExprEngine::Value value,
ExprEngine::DataBase dataBase 
)
static

◆ checkAssignment()

static void checkAssignment ( const Token tok,
const ExprEngine::Value value,
ExprEngine::DataBase dataBase 
)
static

◆ checkFunctionCall()

static void checkFunctionCall ( const Token tok,
const ExprEngine::Value value,
ExprEngine::DataBase dataBase 
)
static

◆ divByZero()

static void divByZero ( const Token tok,
const ExprEngine::Value value,
ExprEngine::DataBase dataBase 
)
static

◆ getKnownFloatValue()

static float getKnownFloatValue ( const Token tok,
float  def 
)
static

Definition at line 44 of file bughuntingchecks.cpp.

References ValueFlow::Value::FLOAT, and Token::values().

Referenced by divByZero().

◆ isLessThan()

static bool isLessThan ( ExprEngine::DataBase dataBase,
ExprEngine::ValuePtr  lhs,
ExprEngine::ValuePtr  rhs 
)
static

Definition at line 53 of file bughuntingchecks.cpp.

References ExprEngine::BinOpResult::isTrue().

Referenced by bufferOverflow().

◆ isVariableAssigned()

static bool isVariableAssigned ( const Variable var,
const Token tok,
const Token scopeStart = nullptr 
)
static

check if variable is unconditionally assigned

Definition at line 286 of file bughuntingchecks.cpp.

References Variable::declarationId(), Token::link(), Token::Match(), Variable::nameToken(), op1_and_op2, precedes(), Token::previous(), Token::simpleMatch(), Token::tokAt(), and visitAstNodes().

Referenced by uninit().

◆ uninit()

static void uninit ( const Token tok,
const ExprEngine::Value value,
ExprEngine::DataBase dataBase 
)
static

Variable Documentation

◆ CWE_BUFFER_OVERRUN

const CWE CWE_BUFFER_OVERRUN(788U) ( 788U  )
static

Referenced by arrayIndex().

◆ CWE_BUFFER_UNDERRUN

const CWE CWE_BUFFER_UNDERRUN(786U) ( 786U  )
static

Referenced by arrayIndex().