File tree Expand file tree Collapse file tree 2 files changed +16
-0
lines changed
cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal Expand file tree Collapse file tree 2 files changed +16
-0
lines changed Original file line number Diff line number Diff line change @@ -27,6 +27,9 @@ DataFlowCallable viableCallable(DataFlowCall call) {
27
27
or
28
28
// Virtual dispatch
29
29
result = call .( VirtualDispatch:: DataSensitiveCall ) .resolve ( )
30
+ or
31
+ // Additional call targets
32
+ result = any ( AdditionalCallTarget additional ) .viableTarget ( call .getUnconvertedResultExpression ( ) )
30
33
}
31
34
32
35
/**
Original file line number Diff line number Diff line change @@ -14,6 +14,7 @@ private import DataFlowPrivate
14
14
private import ModelUtil
15
15
private import SsaInternals as Ssa
16
16
private import DataFlowImplCommon as DataFlowImplCommon
17
+ private import codeql.util.Unit
17
18
18
19
/**
19
20
* The IR dataflow graph consists of the following nodes:
@@ -2237,3 +2238,15 @@ module InstructionBarrierGuard<instructionGuardChecksSig/3 instructionGuardCheck
2237
2238
)
2238
2239
}
2239
2240
}
2241
+
2242
+ /**
2243
+ * A unit class for adding additional call steps.
2244
+ *
2245
+ * Extend this class to add additional call steps to the data flow graph.
2246
+ */
2247
+ class AdditionalCallTarget extends Unit {
2248
+ /**
2249
+ * Gets a viable target for `call`.
2250
+ */
2251
+ abstract DataFlowCallable viableTarget ( Call call ) ;
2252
+ }
You can’t perform that action at this time.
0 commit comments