CodeQL library for C/C++
Search

Module DataFlow

Provides a library for local (intra-procedural) and global (inter-procedural) data flow analysis: deciding whether data can flow from a source to a sink. This library differs from the one in semmle.code.cpp.dataflow in that this library uses the IR (Intermediate Representation) library, which provides a more precise semantic representation of the program, whereas the other dataflow library uses the more syntax-oriented ASTs. This library should provide more accurate results than the AST-based library in most scenarios.

Unless configured otherwise, flow means that the exact value of the source may reach the sink. We do not track flow across pointer dereferences or array indexing.

To use global (interprocedural) data flow, extend the class DataFlow::Configuration as documented on that class. To use local (intraprocedural) data flow between expressions, call DataFlow::localExprFlow. For more general cases of local data flow, call DataFlow::localFlow or DataFlow::localFlowStep with arguments of type DataFlow::Node.

Import path

import semmle.code.cpp.ir.dataflow.DataFlow

Imports

cpp

Provides classes and predicates for working with C/C++ code.

Modules