Skip to content

Commit d5759a7

Browse files
committed
Dataflow: Move definition of toNormalSinkNode.
1 parent 3cbf8e5 commit d5759a7

File tree

2 files changed

+20
-19
lines changed

2 files changed

+20
-19
lines changed

shared/dataflow/codeql/dataflow/internal/DataFlowImpl.qll

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -180,6 +180,8 @@ module MakeImpl<LocationSig Location, InputSig<Location> Lang> {
180180

181181
private predicate stateBarrier = Stage1::stateBarrier/2;
182182

183+
private predicate toNormalSinkNode = Stage1::toNormalSinkNode/1;
184+
183185
private predicate sourceNode = Stage1::sourceNode/2;
184186

185187
private predicate sinkNode = Stage1::sinkNode/2;
@@ -1770,7 +1772,7 @@ module MakeImpl<LocationSig Location, InputSig<Location> Lang> {
17701772
TPathNodeSink(NodeEx node, FlowState state) {
17711773
exists(PathNodeMid sink |
17721774
sink.isAtSink() and
1773-
node = sink.toNormalSinkNodeEx() and
1775+
node = sink.toNormalSinkNode() and
17741776
state = sink.getState()
17751777
)
17761778
} or
@@ -1930,13 +1932,7 @@ module MakeImpl<LocationSig Location, InputSig<Location> Lang> {
19301932

19311933
/** If this node corresponds to a sink, gets the normal node for that sink. */
19321934
pragma[nomagic]
1933-
NodeEx toNormalSinkNodeEx() {
1934-
exists(Node n |
1935-
pragma[only_bind_out](node.asNodeOrImplicitRead()) = n and
1936-
(Stage1::isRelevantSink(n) or Stage1::isRelevantSink(n, _)) and
1937-
result.asNode() = n
1938-
)
1939-
}
1935+
NodeEx toNormalSinkNode() { result = toNormalSinkNode(node) }
19401936

19411937
override PathNodeImpl getASuccessorImpl(string label) {
19421938
// an intermediate step to another intermediate node
@@ -2031,7 +2027,7 @@ module MakeImpl<LocationSig Location, InputSig<Location> Lang> {
20312027
exists(string model |
20322028
this.isAtSink() and
20332029
sinkModel(node, model) and
2034-
result.getNodeEx() = this.toNormalSinkNodeEx() and
2030+
result.getNodeEx() = this.toNormalSinkNode() and
20352031
result.getState() = state and
20362032
if model != "" then label = "Sink:" + model else label = ""
20372033
)

shared/dataflow/codeql/dataflow/internal/DataFlowImplStage1.qll

Lines changed: 15 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -24,16 +24,15 @@ module MakeImplStage1<LocationSig Location, InputSig<Location> Lang> {
2424
bindingset[source, sink]
2525
predicate isRelevantSourceSinkPair(Node source, Node sink);
2626

27-
predicate isRelevantSink(Node sink, FlowState state);
28-
29-
predicate isRelevantSink(Node sink);
30-
3127
predicate inBarrier(NodeEx node, FlowState state);
3228

3329
predicate outBarrier(NodeEx node, FlowState state);
3430

3531
predicate stateBarrier(NodeEx node, FlowState state);
3632

33+
/** If `node` corresponds to a sink, gets the normal node for that sink. */
34+
NodeEx toNormalSinkNode(NodeEx node);
35+
3736
predicate sourceNode(NodeEx node, FlowState state);
3837

3938
predicate sinkNode(NodeEx node, FlowState state);
@@ -269,6 +268,16 @@ module MakeImplStage1<LocationSig Location, InputSig<Location> Lang> {
269268
not stateBarrier(node, state)
270269
}
271270

271+
/** If `node` corresponds to a sink, gets the normal node for that sink. */
272+
pragma[nomagic]
273+
NodeEx toNormalSinkNodeEx(NodeEx node) {
274+
exists(Node n |
275+
pragma[only_bind_out](node.asNodeOrImplicitRead()) = n and
276+
(isRelevantSink(n) or isRelevantSink(n, _)) and
277+
result.asNode() = n
278+
)
279+
}
280+
272281
/** Provides the relevant barriers for a step from `node1` to `node2`. */
273282
bindingset[node1, node2]
274283
private predicate stepFilter(NodeEx node1, NodeEx node2) {
@@ -1212,12 +1221,6 @@ module MakeImplStage1<LocationSig Location, InputSig<Location> Lang> {
12121221
private predicate localStateStepNodeCand1Alias = localStateStepNodeCand1/7;
12131222

12141223
module Stage1NoState implements Stage1Output<FlowState> {
1215-
predicate isRelevantSink(Node sink, FlowState state) {
1216-
SourceSinkFiltering::isRelevantSink(sink, state)
1217-
}
1218-
1219-
predicate isRelevantSink(Node sink) { SourceSinkFiltering::isRelevantSink(sink) }
1220-
12211224
predicate inBarrier = inBarrierAlias/2;
12221225

12231226
predicate outBarrier = outBarrierAlias/2;
@@ -1241,6 +1244,8 @@ module MakeImplStage1<LocationSig Location, InputSig<Location> Lang> {
12411244
import Stage1
12421245
import Stage1Common
12431246

1247+
predicate toNormalSinkNode = toNormalSinkNodeEx/1;
1248+
12441249
predicate sourceNode = sourceNodeAlias/2;
12451250

12461251
predicate jumpStepEx = jumpStepExAlias/2;

0 commit comments

Comments
 (0)