Skip to content

Commit 09502c6

Browse files
authored
Merge pull request github#12812 from egregius313/egregius313/java/dataflow/refactor-tests
Java: Refactor Test DataFlow configurations to new API
2 parents 924ce25 + e6a2528 commit 09502c6

File tree

47 files changed

+360
-431
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

47 files changed

+360
-431
lines changed
Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,16 @@
11
import java
22
import semmle.code.java.dataflow.TaintTracking
33

4-
class Conf extends TaintTracking::Configuration {
5-
Conf() { this = "qltest:extension-method" }
6-
7-
override predicate isSource(DataFlow::Node n) {
4+
module Config implements DataFlow::ConfigSig {
5+
predicate isSource(DataFlow::Node n) {
86
n.asExpr().(Argument).getCall().getCallee().hasName("taint")
97
}
108

11-
override predicate isSink(DataFlow::Node n) {
12-
n.asExpr().(Argument).getCall().getCallee().hasName("sink")
13-
}
9+
predicate isSink(DataFlow::Node n) { n.asExpr().(Argument).getCall().getCallee().hasName("sink") }
1410
}
1511

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

4-
class Conf extends TaintTracking::Configuration {
5-
Conf() { this = "qltest:foreach-array-iterator" }
6-
7-
override predicate isSource(DataFlow::Node n) {
4+
module Config implements DataFlow::ConfigSig {
5+
predicate isSource(DataFlow::Node n) {
86
n.asExpr().(Argument).getCall().getCallee().hasName("taint")
97
}
108

11-
override predicate isSink(DataFlow::Node n) {
12-
n.asExpr().(Argument).getCall().getCallee().hasName("sink")
13-
}
9+
predicate isSink(DataFlow::Node n) { n.asExpr().(Argument).getCall().getCallee().hasName("sink") }
1410
}
1511

16-
from DataFlow::Node src, DataFlow::Node sink, Conf conf
17-
where conf.hasFlow(src, sink)
12+
module Flow = TaintTracking::Global<Config>;
13+
14+
from DataFlow::Node src, DataFlow::Node sink
15+
where Flow::flow(src, sink)
1816
select src, sink
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 = "qltest:lambdaFlow" }
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
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 = "qltest:notNullExprFlow" }
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
Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,16 @@
11
import java
22
import semmle.code.java.dataflow.DataFlow
33

4-
class Conf extends DataFlow::Configuration {
5-
Conf() { this = "qltest:exprStmtFlow" }
6-
7-
override predicate isSource(DataFlow::Node n) {
4+
module Config implements DataFlow::ConfigSig {
5+
predicate isSource(DataFlow::Node n) {
86
n.asExpr().(ClassInstanceExpr).getType().(RefType).getASupertype*().hasName("Source")
97
}
108

11-
override predicate isSink(DataFlow::Node n) {
12-
n.asExpr().(Argument).getCall().getCallee().hasName("sink")
13-
}
9+
predicate isSink(DataFlow::Node n) { n.asExpr().(Argument).getCall().getCallee().hasName("sink") }
1410
}
1511

16-
from DataFlow::Node src, DataFlow::Node sink, Conf conf
17-
where conf.hasFlow(src, sink)
12+
module Flow = DataFlow::Global<Config>;
13+
14+
from DataFlow::Node src, DataFlow::Node sink
15+
where Flow::flow(src, sink)
1816
select src, sink
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 = "kttaintconf" }
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
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 = "qltest:notNullExprFlow" }
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
Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,20 @@
11
import java
22
import semmle.code.java.dataflow.DataFlow
33

4-
class Config extends DataFlow::Configuration {
5-
Config() { this = "Config" }
4+
module Config implements DataFlow::ConfigSig {
5+
predicate isSource(DataFlow::Node n) { n.asExpr().(StringLiteral).getValue() = "Source" }
66

7-
override predicate isSource(DataFlow::Node n) { n.asExpr().(StringLiteral).getValue() = "Source" }
8-
9-
override predicate isSink(DataFlow::Node n) {
7+
predicate isSink(DataFlow::Node n) {
108
n.asExpr().(Argument).getCall().getCallee().getName() = "sink"
119
}
1210
}
1311

12+
module Flow = DataFlow::Global<Config>;
13+
1414
query predicate isFinalField(Field f) {
1515
exists(FieldDeclaration f2 | f = f2.getAField()) and f.isFinal()
1616
}
1717

1818
from DataFlow::Node source, DataFlow::Node sink
19-
where any(Config c).hasFlow(source, sink)
19+
where Flow::flow(source, sink)
2020
select source, sink
Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,18 @@
11
import java
22
import semmle.code.java.dataflow.DataFlow
33

4-
class Config extends DataFlow::Configuration {
5-
Config() { this = "config" }
6-
7-
override predicate isSource(DataFlow::Node n) {
4+
module Config implements DataFlow::ConfigSig {
5+
predicate isSource(DataFlow::Node n) {
86
n.asExpr().(MethodAccess).getCallee().getName() = "source"
97
}
108

11-
override predicate isSink(DataFlow::Node n) {
9+
predicate isSink(DataFlow::Node n) {
1210
n.asExpr().(Argument).getCall().getCallee().getName() = "sink"
1311
}
1412
}
1513

16-
from Config c, DataFlow::Node source, DataFlow::Node sink
17-
where c.hasFlow(source, sink)
14+
module Flow = DataFlow::Global<Config>;
15+
16+
from DataFlow::Node source, DataFlow::Node sink
17+
where Flow::flow(source, sink)
1818
select source, sink, source.getEnclosingCallable()

java/ql/test/kotlin/library-tests/parameter-defaults/flowTest.ql

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -12,21 +12,21 @@ class ShouldBeSunk extends StringLiteral {
1212
}
1313
}
1414

15-
class Config extends DataFlow::Configuration {
16-
Config() { this = "Config" }
17-
18-
override predicate isSource(DataFlow::Node n) {
15+
module Config implements DataFlow::ConfigSig {
16+
predicate isSource(DataFlow::Node n) {
1917
n.asExpr() instanceof ShouldBeSunk or
2018
n.asExpr() instanceof ShouldNotBeSunk
2119
}
2220

23-
override predicate isSink(DataFlow::Node n) {
21+
predicate isSink(DataFlow::Node n) {
2422
n.asExpr().(Argument).getCall().getCallee().getName() = "sink"
2523
}
2624
}
2725

26+
module Flow = DataFlow::Global<Config>;
27+
2828
predicate isSunk(StringLiteral sl) {
29-
exists(Config c, DataFlow::Node source | c.hasFlow(source, _) and sl = source.asExpr())
29+
exists(DataFlow::Node source | Flow::flow(source, _) and sl = source.asExpr())
3030
}
3131

3232
query predicate shouldBeSunkButIsnt(ShouldBeSunk src) { not isSunk(src) }

0 commit comments

Comments
 (0)