Module DataFlowPrivate

Import path

semmle.code.cpp.dataflow.internal.DataFlowPrivate

Predicates

callHasQualifier

Holds if call does not pass an implicit or explicit qualifier, i.e., a this parameter.

compatibleTypes

Holds if t1 and t2 are compatible, that is, whether data can flow from a node of type t1 to a node of type t2.

getErasedRepr

Gets a representative (boxed) type for t for the purpose of pruning possible flow. A single type is used for all numeric types to account for numeric conversions, and otherwise the erasure is used.

jumpStep

Holds if data can flow from node1 to node2 in a way that loses the calling context. For example, this would happen with flow through a global or static variable.

ppReprType

Gets a string representation of a type returned by getErasedRepr.

readStep

Holds if data can flow from node1 to node2 via a read of f. Thus, node1 references an object with a field f whose value ends up in node2.

storeStep

Holds if data can flow from node1 to node2 via an assignment to f. Thus, node2 references an object with a field f that contains the value of node1.

Classes

Argument

An argument to a call.

ArgumentNode

A data flow node that occurs as the argument of a call and is passed as-is to the callable. Arguments that are wrapped in an implicit varargs array creation are not included, but the implicitly created array is. Instance arguments are also included.

Callable
CastExpr
Content

A reference contained in an object. Examples include instance fields, the contents of a collection object, or the contents of an array.

Method

An alias for Function in the C++ library. In the Java library, a Method is any callable except a constructor.

MethodAccess

An alias for FunctionCall in the C++ library. In the Java library, a MethodAccess is any Call that does not call a constructor.

RefType
ReturnNode

A data flow node that occurs as the result of a ReturnStmt.