Skip to content

Commit 501848b

Browse files
committed
Swift: Convert dataflow / taint tests to DataFlow::ConfigSig.
1 parent be6af4b commit 501848b

File tree

8 files changed

+30
-36
lines changed

8 files changed

+30
-36
lines changed

swift/ql/test/library-tests/dataflow/dataflow/DataFlow.ql

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,9 @@
33
*/
44

55
import swift
6-
import codeql.swift.dataflow.DataFlow::DataFlow
76
import FlowConfig
8-
import DataFlow::PathGraph
7+
import TestFlow::PathGraph
98

10-
from DataFlow::PathNode src, DataFlow::PathNode sink, TestConfiguration test
11-
where test.hasFlowPath(src, sink)
9+
from TestFlow::PathNode src, TestFlow::PathNode sink
10+
where TestFlow::flowPath(src, sink)
1211
select sink, src, sink, "result"

swift/ql/test/library-tests/dataflow/dataflow/DataFlowInline.ql

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
import swift
2-
import DataFlow
32
import FlowConfig
43
import TestUtilities.InlineExpectationsTest
54

@@ -9,8 +8,8 @@ class TaintTest extends InlineExpectationsTest {
98
override string getARelevantTag() { result = "flow" }
109

1110
override predicate hasActualResult(Location location, string element, string tag, string value) {
12-
exists(TestConfiguration config, Node source, Node sink, Expr sinkExpr |
13-
config.hasFlow(source, sink) and
11+
exists(DataFlow::Node source, DataFlow::Node sink, Expr sinkExpr |
12+
TestFlow::flow(source, sink) and
1413
sinkExpr = sink.asExpr() and
1514
location = sinkExpr.getLocation() and
1615
element = sinkExpr.toString() and

swift/ql/test/library-tests/dataflow/dataflow/FlowConfig.qll

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -6,21 +6,17 @@ import swift
66
import codeql.swift.dataflow.DataFlow
77
import codeql.swift.dataflow.ExternalFlow
88

9-
class TestConfiguration extends DataFlow::Configuration {
10-
TestConfiguration() { this = "TestConfiguration" }
11-
12-
override predicate isSource(DataFlow::Node src) {
9+
module TestConfiguration implements DataFlow::ConfigSig {
10+
predicate isSource(DataFlow::Node src) {
1311
src.asExpr().(CallExpr).getStaticTarget().getName().matches("source%()")
1412
}
1513

16-
override predicate isSink(DataFlow::Node sink) {
14+
predicate isSink(DataFlow::Node sink) {
1715
exists(CallExpr sinkCall |
1816
sinkCall.getStaticTarget().getName() = ["sink(arg:)", "sink(opt:)", "sink(str:)"] and
1917
sinkCall.getAnArgument().getExpr() = sink.asExpr()
2018
)
2119
}
22-
23-
override int explorationLimit() { result = 100 }
2420
}
2521

2622
private class TestSummaries extends SummaryModelCsv {
@@ -29,3 +25,5 @@ private class TestSummaries extends SummaryModelCsv {
2925
row = ";Int;true;signum();;;Argument[-1];ReturnValue;value"
3026
}
3127
}
28+
29+
module TestFlow = DataFlow::Global<TestConfiguration>;

swift/ql/test/library-tests/dataflow/taint/core/Taint.ql

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

55
import swift
66
import Taint
7-
import PathGraph
7+
import TestFlow::PathGraph
88

9-
from PathNode src, PathNode sink, TestConfiguration test
10-
where test.hasFlowPath(src, sink)
9+
from TestFlow::PathNode src, TestFlow::PathNode sink
10+
where TestFlow::flowPath(src, sink)
1111
select sink, src, sink, "result"
Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,20 @@
11
import swift
22
import codeql.swift.dataflow.TaintTracking
3-
import codeql.swift.dataflow.DataFlow::DataFlow
3+
import codeql.swift.dataflow.DataFlow
44

5-
class TestConfiguration extends TaintTracking::Configuration {
6-
TestConfiguration() { this = "TestConfiguration" }
7-
8-
override predicate isSource(Node src) {
5+
module TestConfiguration implements DataFlow::ConfigSig {
6+
predicate isSource(DataFlow::Node src) {
97
src.asExpr().(CallExpr).getStaticTarget().getName().matches("source%")
108
}
119

12-
override predicate isSink(Node sink) {
10+
predicate isSink(DataFlow::Node sink) {
1311
exists(CallExpr sinkCall |
1412
sinkCall.getStaticTarget().getName().matches("sink%") and
1513
sinkCall.getAnArgument().getExpr() = sink.asExpr()
1614
)
1715
}
1816

19-
override int explorationLimit() { result = 100 }
17+
//override int explorationLimit() { result = 100 }
2018
}
19+
20+
module TestFlow = TaintTracking::Global<TestConfiguration>;

swift/ql/test/library-tests/dataflow/taint/core/TaintInline.ql

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,8 @@ class TaintTest extends InlineExpectationsTest {
88
override string getARelevantTag() { result = "tainted" }
99

1010
override predicate hasActualResult(Location location, string element, string tag, string value) {
11-
exists(TestConfiguration config, Node source, Node sink, Expr sinkExpr |
12-
config.hasFlow(source, sink) and
11+
exists(DataFlow::Node source, DataFlow::Node sink, Expr sinkExpr |
12+
TestFlow::flow(source, sink) and
1313
sinkExpr = sink.asExpr() and
1414
location = sinkExpr.getLocation() and
1515
element = sinkExpr.toString() and
Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,18 @@
11
import swift
22
import codeql.swift.dataflow.TaintTracking
3-
import codeql.swift.dataflow.DataFlow::DataFlow
3+
import codeql.swift.dataflow.DataFlow
44

5-
class TestConfiguration extends TaintTracking::Configuration {
6-
TestConfiguration() { this = "TestConfiguration" }
7-
8-
override predicate isSource(Node src) {
5+
module TestConfiguration implements DataFlow::ConfigSig {
6+
predicate isSource(DataFlow::Node src) {
97
src.asExpr().(CallExpr).getStaticTarget().getName().matches("source%")
108
}
119

12-
override predicate isSink(Node sink) {
10+
predicate isSink(DataFlow::Node sink) {
1311
exists(CallExpr sinkCall |
1412
sinkCall.getStaticTarget().getName().matches("sink%") and
1513
sinkCall.getAnArgument().getExpr() = sink.asExpr()
1614
)
1715
}
18-
19-
override int explorationLimit() { result = 100 }
2016
}
17+
18+
module TestFlow = TaintTracking::Global<TestConfiguration>;

swift/ql/test/library-tests/dataflow/taint/libraries/TaintInline.ql

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,8 @@ class TaintTest extends InlineExpectationsTest {
88
override string getARelevantTag() { result = "tainted" }
99

1010
override predicate hasActualResult(Location location, string element, string tag, string value) {
11-
exists(TestConfiguration config, Node source, Node sink, Expr sinkExpr |
12-
config.hasFlow(source, sink) and
11+
exists(DataFlow::Node source, DataFlow::Node sink, Expr sinkExpr |
12+
TestFlow::flow(source, sink) and
1313
sinkExpr = sink.asExpr() and
1414
location = sinkExpr.getLocation() and
1515
element = sinkExpr.toString() and

0 commit comments

Comments
 (0)