Skip to content

Commit 59e5912

Browse files
committed
Refactor tests
1 parent b47c8e8 commit 59e5912

File tree

5 files changed

+75
-37
lines changed

5 files changed

+75
-37
lines changed

java/ql/test/library-tests/frameworks/JaxWs/JaxRsFlow.ql

Lines changed: 17 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -3,22 +3,26 @@ import semmle.code.java.dataflow.TaintTracking
33
import semmle.code.java.dataflow.FlowSources
44
import TestUtilities.InlineFlowTest
55

6-
class EnableLegacy extends EnableLegacyConfiguration {
7-
EnableLegacy() { exists(this) }
8-
}
9-
10-
class TaintFlowConf extends DefaultTaintFlowConf {
11-
override predicate isSource(DataFlow::Node n) {
12-
super.isSource(n)
6+
module Config implements DataFlow::ConfigSig {
7+
predicate isSource(DataFlow::Node node) {
8+
DefaultFlowConfig::isSource(node)
139
or
14-
n instanceof RemoteFlowSource
10+
node instanceof RemoteFlowSource
1511
}
12+
13+
predicate isSink = DefaultFlowConfig::isSink/1;
1614
}
1715

18-
class ValueFlowConf extends DefaultValueFlowConf {
19-
override predicate isSource(DataFlow::Node n) {
20-
super.isSource(n)
21-
or
22-
n instanceof RemoteFlowSource
16+
module TaintFlow = TaintTracking::Global<Config>;
17+
18+
module ValueFlow = DataFlow::Global<Config>;
19+
20+
class Test extends InlineFlowTest {
21+
override predicate hasTaintFlow(DataFlow::Node source, DataFlow::Node sink) {
22+
TaintFlow::flow(source, sink)
23+
}
24+
25+
override predicate hasValueFlow(DataFlow::Node source, DataFlow::Node sink) {
26+
ValueFlow::flow(source, sink)
2327
}
2428
}
Lines changed: 26 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,37 @@
11
import java
2+
import semmle.code.java.dataflow.TaintTracking
23
import TestUtilities.InlineFlowTest
34
import semmle.code.java.dataflow.FlowSources
45

5-
class EnableLegacy extends EnableLegacyConfiguration {
6-
EnableLegacy() { exists(this) }
6+
module SliceValueFlowConfig implements DataFlow::ConfigSig {
7+
predicate isSource(DataFlow::Node source) {
8+
DefaultFlowConfig::isSource(source) or source instanceof RemoteFlowSource
9+
}
10+
11+
predicate isSink = DefaultFlowConfig::isSink/1;
712
}
813

9-
class SliceValueFlowConf extends DefaultValueFlowConf {
10-
override predicate isSource(DataFlow::Node source) {
11-
super.isSource(source) or source instanceof RemoteFlowSource
14+
module SliceValueFlow = DataFlow::Global<SliceValueFlowConfig>;
15+
16+
module SliceTaintFlowConfig implements DataFlow::ConfigSig {
17+
predicate isSource = DefaultFlowConfig::isSource/1;
18+
19+
predicate isSink = DefaultFlowConfig::isSink/1;
20+
21+
predicate allowImplicitRead(DataFlow::Node node, DataFlow::ContentSet c) {
22+
DefaultFlowConfig::isSink(node) and
23+
c.(DataFlow::SyntheticFieldContent).getField() = "androidx.slice.Slice.action"
1224
}
1325
}
1426

15-
class SliceTaintFlowConf extends DefaultTaintFlowConf {
16-
override predicate allowImplicitRead(DataFlow::Node node, DataFlow::ContentSet c) {
17-
super.allowImplicitRead(node, c)
18-
or
19-
isSink(node) and
20-
c.(DataFlow::SyntheticFieldContent).getField() = "androidx.slice.Slice.action"
27+
module SliceTaintFlow = TaintTracking::Global<SliceTaintFlowConfig>;
28+
29+
class SliceFlowTest extends InlineFlowTest {
30+
override predicate hasValueFlow(DataFlow::Node source, DataFlow::Node sink) {
31+
SliceValueFlow::flow(source, sink)
32+
}
33+
34+
override predicate hasTaintFlow(DataFlow::Node source, DataFlow::Node sink) {
35+
SliceTaintFlow::flow(source, sink)
2136
}
2237
}
Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,22 @@
11
import java
2+
import semmle.code.java.dataflow.DataFlow
23
import semmle.code.java.dataflow.FlowSources
34
import TestUtilities.InlineFlowTest
45

5-
class Conf extends DefaultTaintFlowConf {
6-
override predicate isSource(DataFlow::Node node) {
7-
super.isSource(node)
6+
module Config implements DataFlow::ConfigSig {
7+
predicate isSource(DataFlow::Node node) {
8+
DefaultFlowConfig::isSource(node)
89
or
910
node instanceof RemoteFlowSource
1011
}
12+
13+
predicate isSink = DefaultFlowConfig::isSink/1;
1114
}
1215

13-
class LegacyConfig extends EnableLegacyConfiguration {
14-
LegacyConfig() { this instanceof Unit }
16+
module Flow = TaintTracking::Global<Config>;
17+
18+
class Test extends InlineFlowTest {
19+
override predicate hasTaintFlow(DataFlow::Node source, DataFlow::Node sink) {
20+
Flow::flow(source, sink)
21+
}
1522
}
Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,17 @@
11
import java
2+
import semmle.code.java.dataflow.DataFlow
23
import TestUtilities.InlineFlowTest
34

4-
class EnableLegacy extends EnableLegacyConfiguration {
5-
EnableLegacy() { exists(this) }
5+
module OkHttpFlowConf implements DataFlow::ConfigSig {
6+
predicate isSource = DefaultFlowConfig::isSource/1;
7+
8+
predicate isSink(DataFlow::Node n) { DefaultFlowConfig::isSink(n) or sinkNode(n, "open-url") }
69
}
710

8-
class FlowConf extends DefaultValueFlowConf {
9-
override predicate isSink(DataFlow::Node n) { super.isSink(n) or sinkNode(n, "open-url") }
11+
module OkHttpFlow = DataFlow::Global<OkHttpFlowConf>;
12+
13+
class OkHttpTest extends InlineFlowTest {
14+
override predicate hasValueFlow(DataFlow::Node src, DataFlow::Node sink) {
15+
OkHttpFlow::flow(src, sink)
16+
}
1017
}
Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,15 @@
11
import java
2+
import semmle.code.java.dataflow.DataFlow
23
import TestUtilities.InlineFlowTest
34

4-
class EnableLegacy extends EnableLegacyConfiguration {
5-
EnableLegacy() { exists(this) }
5+
module FlowConfig implements DataFlow::ConfigSig {
6+
predicate isSource = DefaultFlowConfig::isSource/1;
7+
8+
predicate isSink(DataFlow::Node n) { DefaultFlowConfig::isSink(n) or sinkNode(n, "open-url") }
69
}
710

8-
class FlowConf extends DefaultValueFlowConf {
9-
override predicate isSink(DataFlow::Node n) { super.isSink(n) or sinkNode(n, "open-url") }
11+
module Flow = DataFlow::Global<FlowConfig>;
12+
13+
class RetrofitFlowTest extends InlineFlowTest {
14+
override predicate hasValueFlow(DataFlow::Node src, DataFlow::Node sink) { Flow::flow(src, sink) }
1015
}

0 commit comments

Comments
 (0)