Class SummaryCall
A synthesized call inside a callable with a flow summary.
For example, consider the function:
int myFunction(int (*funPtr)());
with an accompanying models-as-data flow summary involving funPtr (for
example from Argument[0].ReturnValue to ReturnValue). A SummaryCall
will be synthesized representing a call to funPtr inside myFunction,
so that flow can be connected as described in the model.
Import path
import semmle.code.cpp.ir.dataflow.internal.DataFlowPrivateDirect supertypes
Indirect supertypes
Predicates
| getEnclosingCallable | Gets the enclosing callable, if any. |
| getLocation | Gets the location of this call. |
| getReceiver | Gets the data flow node that holds the address of the function this call targets. |
| toString | Gets a textual representation of this call. |
Inherited predicates
| asCallInstruction | Gets the underlying data flow call instruction, if any. | from DataFlowCall |
| getArgument | Gets the argument at the specified index, or | from DataFlowCall |
| getArgumentOperand | Gets the | from DataFlowCall |
| getCallTargetOperand | Gets the operand the specifies the target function of the call. | from DataFlowCall |
| getNumberOfArguments | Gets the number of arguments of the call, including the | from DataFlowCall |
| getStaticCallSourceTarget | Gets the | from DataFlowCall |
| getStaticCallTarget | Gets the target of this call. We use the following strategy for deciding between the source callable and a summarized callable: - If there is a manual summary then we always use the manual summary. - If there is a source callable and we only have generated summaries we use the source callable. - If there is no source callable then we use the summary regardless of whether is it manual or generated. | from DataFlowCall |