File tree Expand file tree Collapse file tree 1 file changed +28
-0
lines changed
cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal Expand file tree Collapse file tree 1 file changed +28
-0
lines changed Original file line number Diff line number Diff line change @@ -2243,6 +2243,34 @@ module InstructionBarrierGuard<instructionGuardChecksSig/3 instructionGuardCheck
2243
2243
* A unit class for adding additional call steps.
2244
2244
*
2245
2245
* Extend this class to add additional call steps to the data flow graph.
2246
+ *
2247
+ * For example, if the following subclass is added:
2248
+ * ```ql
2249
+ * class MyAdditionalCallTarget extends DataFlow::AdditionalCallTarget {
2250
+ * override Function viableTarget(Call call) {
2251
+ * call.getTarget().hasName("f") and
2252
+ * result.hasName("g")
2253
+ * }
2254
+ * }
2255
+ * ```
2256
+ * then flow from `source()` to `x` in `sink(x)` is reported in the following example:
2257
+ * ```cpp
2258
+ * void sink(int);
2259
+ * int source();
2260
+ * void f(int);
2261
+ *
2262
+ * void g(int x) {
2263
+ * sink(x);
2264
+ * }
2265
+ *
2266
+ * void test() {
2267
+ * int x = source();
2268
+ * f(x);
2269
+ * }
2270
+ * ```
2271
+ *
2272
+ * Note: To prevent reevaluation of cached dataflow-related predicates any
2273
+ * subclass of `AdditionalCallTarget` must be imported in all dataflow queries.
2246
2274
*/
2247
2275
class AdditionalCallTarget extends Unit {
2248
2276
/**
You can’t perform that action at this time.
0 commit comments