A library for dealing with printf-like formatting strings.
Import path
import semmle.code.cpp.commons.Printf
Imports
| CommonType | |
| FormattingFunction | Provides a class for modeling printf-style formatting functions. To use this QL library, create a QL class extending FormattingFunction with a characteristic predicate that selects the function or set of functions you are modeling. Within that class, override the predicates provided by FormattingFunction to match the flow within that function.
|
| StringAnalysis | Provides a class for calculating the possible length of string expressions.
|
| Type | Provides a hierarchy of classes for modeling C/C++ types.
|
Predicates
| primitiveVariadicFormatter | A standard function such as vprintf that has a format parameter and a variable argument list of type va_arg. formatParamIndex indicates the format parameter and type indicates the type of vprintf: - "" is a vprintf variant, outputParamIndex is -1. - "f" is a vfprintf variant, outputParamIndex indicates the output stream parameter. - "s" is a vsprintf variant, outputParamIndex indicates the output buffer parameter. - "?" if the type cannot be determined. outputParamIndex is -1.
|
| variadicFormatter | Holds if f is a function such as vprintf that has a format parameter and a variable argument list of type va_arg. formatParamIndex indicates the format parameter and type indicates the type of vprintf: - "" is a vprintf variant, outputParamIndex is -1. - "f" is a vfprintf variant, outputParamIndex indicates the output stream parameter. - "s" is a vsprintf variant, outputParamIndex indicates the output buffer parameter. - "?" if the type cannot be determined. outputParamIndex is -1.
|
Classes
| AttributeFormattingFunction | A function that can be identified as a printf style formatting function by its use of the GNU format attribute.
|
| BufferWriteEstimationReason | A reason for a specific buffer write size estimate.
|
| FormatLiteral | A class to represent format strings that occur as arguments to invocations of formatting functions.
|
| FormattingFunctionCall | A call to one of the formatting functions.
|
| PrintfFormatAttribute | |
| TypeBoundsAnalysis | The estimation comes from rough bounds just based on the type (e.g. 0 <= x < 2^32 for an unsigned 32 bit integer).
|
| UnspecifiedEstimateReason | No particular reason given. This is currently used for backward compatibility so that classes derived from BufferWrite and overriding getMaxData/0 still work with the queries as intended.
|
| UserDefinedFormattingFunction | A function not in the standard library which takes a printf-like formatting string and a variable number of arguments.
|
| ValueFlowAnalysis | The estimation comes from non trivial bounds found via actual flow analysis. For example unsigned u = x; if (u < 1000) { //... <- estimation done here based on u }
|
| WidenedValueFlowAnalysis | The estimation comes from non trivial bounds found via actual flow analysis, but a widening approximation might have been used for variables in loops. For example for (int i = 0; i < 10; ++i) { int j = i + i; //... <- estimation done here based on j }
|