Skip to content

Commit d7ed325

Browse files
author
Benjamin Muskalla
committed
Refactor content flow into predicate
1 parent f431089 commit d7ed325

File tree

3 files changed

+20
-26
lines changed

3 files changed

+20
-26
lines changed

java/ql/src/utils/model-generator/CaptureSourceModels.ql

Lines changed: 1 addition & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -35,19 +35,7 @@ class FromSourceConfiguration extends TaintTracking::Configuration {
3535
}
3636

3737
override predicate isAdditionalTaintStep(DataFlow::Node node1, DataFlow::Node node2) {
38-
exists(DataFlow::Content f |
39-
readStep(node1, f, node2) and
40-
if f instanceof DataFlow::FieldContent
41-
then isRelevantType(f.(DataFlow::FieldContent).getField().getType())
42-
else any()
43-
)
44-
or
45-
exists(DataFlow::Content f | storeStep(node1, f, node2) |
46-
f instanceof DataFlow::ArrayContent or
47-
f instanceof DataFlow::CollectionContent or
48-
f instanceof DataFlow::MapKeyContent or
49-
f instanceof DataFlow::MapValueContent
50-
)
38+
isRelevantTaintStep(node1, node2)
5139
}
5240
}
5341

java/ql/src/utils/model-generator/CaptureSummaryModels.ql

Lines changed: 1 addition & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -54,19 +54,7 @@ class FieldToReturnConfig extends TaintTracking::Configuration {
5454
}
5555

5656
override predicate isAdditionalTaintStep(DataFlow::Node node1, DataFlow::Node node2) {
57-
exists(DataFlow::Content f |
58-
readStep(node1, f, node2) and
59-
if f instanceof DataFlow::FieldContent
60-
then isRelevantType(f.(DataFlow::FieldContent).getField().getType())
61-
else any()
62-
)
63-
or
64-
exists(DataFlow::Content f | storeStep(node1, f, node2) |
65-
f instanceof DataFlow::ArrayContent or
66-
f instanceof DataFlow::CollectionContent or
67-
f instanceof DataFlow::MapKeyContent or
68-
f instanceof DataFlow::MapValueContent
69-
)
57+
isRelevantTaintStep(node1, node2)
7058
}
7159

7260
override DataFlow::FlowFeature getAFeature() {

java/ql/src/utils/model-generator/ModelGeneratorUtils.qll

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@ import java
22
private import semmle.code.java.dataflow.ExternalFlow
33
private import semmle.code.java.dataflow.internal.ContainerFlow
44
private import semmle.code.java.dataflow.internal.DataFlowImplCommon
5+
private import semmle.code.java.dataflow.DataFlow
6+
private import semmle.code.java.dataflow.internal.DataFlowPrivate
57

68
Method superImpl(Method m) {
79
result = m.getAnOverride() and
@@ -132,6 +134,22 @@ predicate isRelevantType(Type t) {
132134
)
133135
}
134136

137+
predicate isRelevantTaintStep(DataFlow::Node node1, DataFlow::Node node2) {
138+
exists(DataFlow::Content f |
139+
readStep(node1, f, node2) and
140+
if f instanceof DataFlow::FieldContent
141+
then isRelevantType(f.(DataFlow::FieldContent).getField().getType())
142+
else any()
143+
)
144+
or
145+
exists(DataFlow::Content f | storeStep(node1, f, node2) |
146+
f instanceof DataFlow::ArrayContent or
147+
f instanceof DataFlow::CollectionContent or
148+
f instanceof DataFlow::MapKeyContent or
149+
f instanceof DataFlow::MapValueContent
150+
)
151+
}
152+
135153
string returnNodeAsOutput(TargetAPI api, ReturnNodeExt node) {
136154
if node.getKind() instanceof ValueReturnKind
137155
then result = "ReturnValue"

0 commit comments

Comments
 (0)