Skip to content

Commit 95c2896

Browse files
committed
Refactor dataflow library tests
1 parent 0c380cd commit 95c2896

File tree

12 files changed

+91
-97
lines changed

12 files changed

+91
-97
lines changed

java/ql/test/library-tests/dataflow/call-sensitivity/flow.ql

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -4,21 +4,21 @@
44

55
import java
66
import semmle.code.java.dataflow.DataFlow
7-
import DataFlow::PathGraph
7+
import Flow::PathGraph
88

9-
class Conf extends DataFlow::Configuration {
10-
Conf() { this = "CallSensitiveFlowConf" }
9+
module Config implements DataFlow::ConfigSig {
10+
predicate isSource(DataFlow::Node src) { src.asExpr() instanceof ClassInstanceExpr }
1111

12-
override predicate isSource(DataFlow::Node src) { src.asExpr() instanceof ClassInstanceExpr }
13-
14-
override predicate isSink(DataFlow::Node sink) {
12+
predicate isSink(DataFlow::Node sink) {
1513
exists(MethodAccess ma |
1614
ma.getMethod().hasName("sink") and
1715
ma.getAnArgument() = sink.asExpr()
1816
)
1917
}
2018
}
2119

22-
from DataFlow::PathNode source, DataFlow::PathNode sink, Conf conf
23-
where conf.hasFlowPath(source, sink)
20+
module Flow = DataFlow::Global<Config>;
21+
22+
from Flow::PathNode source, Flow::PathNode sink
23+
where Flow::flowPath(source, sink)
2424
select source, source, sink, "$@", sink, sink.toString()

java/ql/test/library-tests/dataflow/callback-dispatch/test.ql

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,26 +2,24 @@ import java
22
import semmle.code.java.dataflow.DataFlow
33
import TestUtilities.InlineExpectationsTest
44

5-
class Conf extends DataFlow::Configuration {
6-
Conf() { this = "qltest:callback-dispatch" }
5+
module Config implements DataFlow::ConfigSig {
6+
predicate isSource(DataFlow::Node n) { n.asExpr().(MethodAccess).getMethod().hasName("source") }
77

8-
override predicate isSource(DataFlow::Node n) {
9-
n.asExpr().(MethodAccess).getMethod().hasName("source")
10-
}
11-
12-
override predicate isSink(DataFlow::Node n) {
8+
predicate isSink(DataFlow::Node n) {
139
exists(MethodAccess ma | ma.getMethod().hasName("sink") | n.asExpr() = ma.getAnArgument())
1410
}
1511
}
1612

13+
module Flow = DataFlow::Global<Config>;
14+
1715
class HasFlowTest extends InlineExpectationsTest {
1816
HasFlowTest() { this = "HasFlowTest" }
1917

2018
override string getARelevantTag() { result = "flow" }
2119

2220
override predicate hasActualResult(Location location, string element, string tag, string value) {
2321
tag = "flow" and
24-
exists(DataFlow::Node src, DataFlow::Node sink, Conf conf | conf.hasFlow(src, sink) |
22+
exists(DataFlow::Node src, DataFlow::Node sink | Flow::flow(src, sink) |
2523
sink.getLocation() = location and
2624
element = sink.toString() and
2725
value = src.asExpr().(MethodAccess).getAnArgument().toString()
Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,8 @@
11
import java
22
import semmle.code.java.dataflow.TaintTracking
33

4-
class Conf extends TaintTracking::Configuration {
5-
Conf() { this = "conf" }
6-
7-
override predicate isSource(DataFlow::Node src) {
4+
module Config implements DataFlow::ConfigSig {
5+
predicate isSource(DataFlow::Node src) {
86
(
97
src.asExpr().(VarAccess).getVariable().hasName("tainted")
108
or
@@ -14,7 +12,7 @@ class Conf extends TaintTracking::Configuration {
1412
)
1513
}
1614

17-
override predicate isSink(DataFlow::Node sink) {
15+
predicate isSink(DataFlow::Node sink) {
1816
exists(MethodAccess ma |
1917
sink.asExpr() = ma.getAnArgument() and
2018
ma.getMethod().hasName("sink")
@@ -25,6 +23,8 @@ class Conf extends TaintTracking::Configuration {
2523
}
2624
}
2725

28-
from Conf c, DataFlow::Node src, DataFlow::Node sink
29-
where c.hasFlow(src, sink)
26+
module Flow = TaintTracking::Global<Config>;
27+
28+
from DataFlow::Node src, DataFlow::Node sink
29+
where Flow::flow(src, sink)
3030
select src, sink

java/ql/test/library-tests/dataflow/entrypoint-types/EntryPointTypesTest.ql

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,24 +8,24 @@ class TestRemoteFlowSource extends RemoteFlowSource {
88
override string getSourceType() { result = "test" }
99
}
1010

11-
class TaintFlowConf extends TaintTracking::Configuration {
12-
TaintFlowConf() { this = "qltest:dataflow:entrypoint-types-taint" }
11+
module TaintFlowConfig implements DataFlow::ConfigSig {
12+
predicate isSource(DataFlow::Node n) { n instanceof RemoteFlowSource }
1313

14-
override predicate isSource(DataFlow::Node n) { n instanceof RemoteFlowSource }
15-
16-
override predicate isSink(DataFlow::Node n) {
14+
predicate isSink(DataFlow::Node n) {
1715
exists(MethodAccess ma | ma.getMethod().hasName("sink") | n.asExpr() = ma.getAnArgument())
1816
}
1917
}
2018

19+
module TaintFlow = TaintTracking::Global<TaintFlowConfig>;
20+
2121
class HasFlowTest extends InlineExpectationsTest {
2222
HasFlowTest() { this = "HasFlowTest" }
2323

2424
override string getARelevantTag() { result = ["hasTaintFlow"] }
2525

2626
override predicate hasActualResult(Location location, string element, string tag, string value) {
2727
tag = "hasTaintFlow" and
28-
exists(DataFlow::Node sink, TaintFlowConf conf | conf.hasFlowTo(sink) |
28+
exists(DataFlow::Node sink | TaintFlow::flowTo(sink) |
2929
sink.getLocation() = location and
3030
element = sink.toString() and
3131
value = ""
Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,19 @@
11
import java
22
import semmle.code.java.dataflow.DataFlow
33

4-
class Conf extends DataFlow::Configuration {
5-
Conf() { this = "FieldFlowConf" }
4+
module Config implements DataFlow::ConfigSig {
5+
predicate isSource(DataFlow::Node src) { src.asExpr() instanceof ClassInstanceExpr }
66

7-
override predicate isSource(DataFlow::Node src) { src.asExpr() instanceof ClassInstanceExpr }
8-
9-
override predicate isSink(DataFlow::Node sink) {
7+
predicate isSink(DataFlow::Node sink) {
108
exists(MethodAccess ma |
119
ma.getMethod().hasName("sink") and
1210
ma.getAnArgument() = sink.asExpr()
1311
)
1412
}
1513
}
1614

17-
from DataFlow::Node src, DataFlow::Node sink, Conf conf
18-
where conf.hasFlow(src, sink)
15+
module Flow = DataFlow::Global<Config>;
16+
17+
from DataFlow::Node src, DataFlow::Node sink
18+
where Flow::flow(src, sink)
1919
select src, sink
Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,14 @@
11
import java
22
import semmle.code.java.dataflow.TaintTracking
33

4-
class Conf extends TaintTracking::Configuration {
5-
Conf() { this = "qltest lambda" }
6-
7-
override predicate isSource(DataFlow::Node src) {
4+
module Config implements DataFlow::ConfigSig {
5+
predicate isSource(DataFlow::Node src) {
86
src.asExpr().(VarAccess).getVariable().hasName("args")
97
or
108
src.asExpr().(MethodAccess).getMethod().hasName("source")
119
}
1210

13-
override predicate isSink(DataFlow::Node sink) {
11+
predicate isSink(DataFlow::Node sink) {
1412
sink.asExpr().(Argument).getCall() =
1513
any(MethodAccess ma |
1614
ma.getMethod().hasName("exec") and
@@ -19,6 +17,8 @@ class Conf extends TaintTracking::Configuration {
1917
}
2018
}
2119

22-
from DataFlow::Node src, DataFlow::Node sink, Conf c
23-
where c.hasFlow(src, sink)
20+
module Flow = TaintTracking::Global<Config>;
21+
22+
from DataFlow::Node src, DataFlow::Node sink
23+
where Flow::flow(src, sink)
2424
select src, sink
Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,21 @@
11
import java
22
import semmle.code.java.dataflow.DataFlow
33

4-
class Conf extends DataFlow::Configuration {
5-
Conf() { this = "conf" }
6-
7-
override predicate isSource(DataFlow::Node src) {
4+
module Config implements DataFlow::ConfigSig {
5+
predicate isSource(DataFlow::Node src) {
86
src.asExpr().(MethodAccess).getMethod().hasName("source")
97
}
108

11-
override predicate isSink(DataFlow::Node sink) {
9+
predicate isSink(DataFlow::Node sink) {
1210
exists(MethodAccess ma |
1311
sink.asExpr() = ma.getAnArgument() and
1412
ma.getMethod().hasName("sink")
1513
)
1614
}
1715
}
1816

19-
from Conf c, DataFlow::Node src, DataFlow::Node sink
20-
where c.hasFlow(src, sink)
17+
module Flow = DataFlow::Global<Config>;
18+
19+
from DataFlow::Node src, DataFlow::Node sink
20+
where Flow::flow(src, sink)
2121
select src, sink
Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
11
import java
22
import semmle.code.java.dataflow.DataFlow
33

4-
class Conf extends DataFlow::Configuration {
5-
Conf() { this = "qqconf" }
4+
module Config implements DataFlow::ConfigSig {
5+
predicate isSource(DataFlow::Node n) { n.asExpr() instanceof NullLiteral }
66

7-
override predicate isSource(DataFlow::Node n) { n.asExpr() instanceof NullLiteral }
8-
9-
override predicate isSink(DataFlow::Node n) { any() }
7+
predicate isSink(DataFlow::Node n) { any() }
108
}
119

12-
from Conf conf, DataFlow::Node src, DataFlow::Node sink
13-
where conf.hasFlow(src, sink)
10+
module Flow = DataFlow::Global<Config>;
11+
12+
from DataFlow::Node src, DataFlow::Node sink
13+
where Flow::flow(src, sink)
1414
select src, sink

java/ql/test/library-tests/dataflow/taint-ioutils/dataFlow.ql

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,14 @@ import semmle.code.java.dataflow.DataFlow
22
import semmle.code.java.dataflow.TaintTracking
33
import semmle.code.java.dataflow.FlowSources
44

5-
class Conf extends TaintTracking::Configuration {
6-
Conf() { this = "qltest:dataflow:ioutils" }
5+
module Config implements DataFlow::ConfigSig {
6+
predicate isSource(DataFlow::Node source) { source instanceof UserInput }
77

8-
override predicate isSource(DataFlow::Node source) { source instanceof UserInput }
9-
10-
override predicate isSink(DataFlow::Node sink) { any() }
8+
predicate isSink(DataFlow::Node sink) { any() }
119
}
1210

13-
from UserInput u, DataFlow::Node e, Conf config
14-
where config.hasFlow(u, e) and e.getEnclosingCallable().hasName("ioutils")
11+
module Flow = TaintTracking::Global<Config>;
12+
13+
from UserInput u, DataFlow::Node e
14+
where Flow::flow(u, e) and e.getEnclosingCallable().hasName("ioutils")
1515
select e
Lines changed: 7 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,14 @@
11
import java
22
import semmle.code.java.dataflow.TaintTracking
33

4-
class Conf extends TaintTracking::Configuration {
5-
Conf() { this = "qqconf" }
4+
module Config implements DataFlow::ConfigSig {
5+
predicate isSource(DataFlow::Node n) { n.asExpr().(MethodAccess).getMethod().hasName("taint") }
66

7-
override predicate isSource(DataFlow::Node n) {
8-
n.asExpr().(MethodAccess).getMethod().hasName("taint")
9-
}
10-
11-
override predicate isSink(DataFlow::Node n) {
12-
n.asExpr().(Argument).getCall().getCallee().hasName("sink")
13-
}
7+
predicate isSink(DataFlow::Node n) { n.asExpr().(Argument).getCall().getCallee().hasName("sink") }
148
}
159

16-
from DataFlow::Node src, DataFlow::Node sink, Conf conf
17-
where conf.hasFlow(src, sink)
10+
module Flow = TaintTracking::Global<Config>;
11+
12+
from DataFlow::Node src, DataFlow::Node sink
13+
where Flow::flow(src, sink)
1814
select src, sink

0 commit comments

Comments
 (0)