Skip to content

Commit 2476e71

Browse files
committed
C#: Move the isRelevantTaintStep and isRelevantContent into the shared utils.
1 parent 665e3c9 commit 2476e71

File tree

4 files changed

+43
-43
lines changed

4 files changed

+43
-43
lines changed

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

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,25 @@
11
import ModelGeneratorUtilsSpecific
22

3+
predicate isRelevantTaintStep(DataFlow::Node node1, DataFlow::Node node2) {
4+
exists(DataFlow::Content f |
5+
readStep(node1, f, node2) and
6+
if f instanceof DataFlow::FieldContent
7+
then isRelevantType(f.(DataFlow::FieldContent).getField().getType())
8+
else
9+
if f instanceof DataFlow::SyntheticFieldContent
10+
then isRelevantType(f.(DataFlow::SyntheticFieldContent).getField().getType())
11+
else any()
12+
)
13+
or
14+
exists(DataFlow::Content f | storeStep(node1, f, node2) | DataFlow::containerContent(f))
15+
}
16+
17+
predicate isRelevantContent(DataFlow::Content f) {
18+
isRelevantType(f.(DataFlow::FieldContent).getField().getType()) or
19+
isRelevantType(f.(DataFlow::FieldContent).getField().getType()) or
20+
DataFlow::containerContent(f)
21+
}
22+
323
bindingset[input, output, kind]
424
string asSummaryModel(TargetAPI api, string input, string output, string kind) {
525
result =

csharp/ql/src/utils/model-generator/ModelGeneratorUtilsSpecific.qll

Lines changed: 1 addition & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import csharp
2+
import semmle.code.csharp.dataflow.internal.DataFlowPrivate
23
private import semmle.code.csharp.commons.Util
3-
private import semmle.code.csharp.dataflow.internal.DataFlowPrivate
44
private import semmle.code.csharp.dataflow.internal.DataFlowImplCommon
55
private import semmle.code.csharp.dataflow.internal.DataFlowDispatch
66

@@ -55,26 +55,6 @@ string asPartialModel(TargetAPI api) {
5555

5656
predicate isRelevantType(Type t) { not t instanceof Enum }
5757

58-
predicate isRelevantTaintStep(DataFlow::Node node1, DataFlow::Node node2) {
59-
exists(DataFlow::Content f |
60-
readStep(node1, f, node2) and
61-
if f instanceof DataFlow::FieldContent
62-
then isRelevantType(f.(DataFlow::FieldContent).getField().getType())
63-
else
64-
if f instanceof DataFlow::SyntheticFieldContent
65-
then isRelevantType(f.(DataFlow::SyntheticFieldContent).getField().getType())
66-
else any()
67-
)
68-
or
69-
exists(DataFlow::Content f | storeStep(node1, f, node2) | DataFlow::containerContent(f))
70-
}
71-
72-
predicate isRelevantContent(DataFlow::Content f) {
73-
isRelevantType(f.(DataFlow::FieldContent).getField().getType()) or
74-
isRelevantType(f.(DataFlow::FieldContent).getField().getType()) or
75-
DataFlow::containerContent(f)
76-
}
77-
7858
private predicate isPrimitiveTypeUsedForBulkData(Type t) {
7959
t.getName().regexpMatch("byte|char|Byte|Char")
8060
}

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

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,25 @@
11
import ModelGeneratorUtilsSpecific
22

3+
predicate isRelevantTaintStep(DataFlow::Node node1, DataFlow::Node node2) {
4+
exists(DataFlow::Content f |
5+
readStep(node1, f, node2) and
6+
if f instanceof DataFlow::FieldContent
7+
then isRelevantType(f.(DataFlow::FieldContent).getField().getType())
8+
else
9+
if f instanceof DataFlow::SyntheticFieldContent
10+
then isRelevantType(f.(DataFlow::SyntheticFieldContent).getField().getType())
11+
else any()
12+
)
13+
or
14+
exists(DataFlow::Content f | storeStep(node1, f, node2) | DataFlow::containerContent(f))
15+
}
16+
17+
predicate isRelevantContent(DataFlow::Content f) {
18+
isRelevantType(f.(DataFlow::FieldContent).getField().getType()) or
19+
isRelevantType(f.(DataFlow::FieldContent).getField().getType()) or
20+
DataFlow::containerContent(f)
21+
}
22+
323
bindingset[input, output, kind]
424
string asSummaryModel(TargetApi api, string input, string output, string kind) {
525
result =

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

Lines changed: 2 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
import java
2+
import semmle.code.java.dataflow.internal.DataFlowPrivate
3+
import semmle.code.java.dataflow.DataFlow
24
private import semmle.code.java.dataflow.ExternalFlow
35
private import semmle.code.java.dataflow.internal.ContainerFlow
46
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
77

88
Method superImpl(Method m) {
99
result = m.getAnOverride() and
@@ -111,26 +111,6 @@ predicate isRelevantType(Type t) {
111111
)
112112
}
113113

114-
predicate isRelevantTaintStep(DataFlow::Node node1, DataFlow::Node node2) {
115-
exists(DataFlow::Content f |
116-
readStep(node1, f, node2) and
117-
if f instanceof DataFlow::FieldContent
118-
then isRelevantType(f.(DataFlow::FieldContent).getField().getType())
119-
else
120-
if f instanceof DataFlow::SyntheticFieldContent
121-
then isRelevantType(f.(DataFlow::SyntheticFieldContent).getField().getType())
122-
else any()
123-
)
124-
or
125-
exists(DataFlow::Content f | storeStep(node1, f, node2) | DataFlow::containerContent(f))
126-
}
127-
128-
predicate isRelevantContent(DataFlow::Content f) {
129-
isRelevantType(f.(DataFlow::FieldContent).getField().getType()) or
130-
isRelevantType(f.(DataFlow::FieldContent).getField().getType()) or
131-
DataFlow::containerContent(f)
132-
}
133-
134114
private string parameterAccess(Parameter p) {
135115
if
136116
p.getType() instanceof Array and

0 commit comments

Comments
 (0)