Skip to content

Commit 8185427

Browse files
committed
Make tests use InlineFlowTest
1 parent d385113 commit 8185427

15 files changed

Lines changed: 200 additions & 496 deletions

File tree

Lines changed: 2 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -1,56 +1,3 @@
11
import go
2-
import TestUtilities.InlineExpectationsTest
3-
4-
class DataConfiguration extends DataFlow::Configuration {
5-
DataConfiguration() { this = "data-configuration" }
6-
7-
override predicate isSource(DataFlow::Node source) {
8-
source = any(DataFlow::CallNode c | c.getCalleeName() = "source").getResult(0)
9-
}
10-
11-
override predicate isSink(DataFlow::Node sink) {
12-
sink = any(DataFlow::CallNode c | c.getCalleeName() = "sink").getArgument(0)
13-
}
14-
}
15-
16-
module DataFlowTest implements TestSig {
17-
string getARelevantTag() { result = "dataflow" }
18-
19-
predicate hasActualResult(Location location, string element, string tag, string value) {
20-
tag = "dataflow" and
21-
exists(DataFlow::Node sink | any(DataConfiguration c).hasFlow(_, sink) |
22-
element = sink.toString() and
23-
value = "" and
24-
sink.hasLocationInfo(location.getFile().getAbsolutePath(), location.getStartLine(),
25-
location.getStartColumn(), location.getEndLine(), location.getEndColumn())
26-
)
27-
}
28-
}
29-
30-
class TaintConfiguration extends TaintTracking::Configuration {
31-
TaintConfiguration() { this = "taint-configuration" }
32-
33-
override predicate isSource(DataFlow::Node source) {
34-
source = any(DataFlow::CallNode c | c.getCalleeName() = "source").getResult(0)
35-
}
36-
37-
override predicate isSink(DataFlow::Node sink) {
38-
sink = any(DataFlow::CallNode c | c.getCalleeName() = "sink").getArgument(0)
39-
}
40-
}
41-
42-
module TaintFlowTest implements TestSig {
43-
string getARelevantTag() { result = "taintflow" }
44-
45-
predicate hasActualResult(Location location, string element, string tag, string value) {
46-
tag = "taintflow" and
47-
exists(DataFlow::Node sink | any(TaintConfiguration c).hasFlow(_, sink) |
48-
element = sink.toString() and
49-
value = "" and
50-
sink.hasLocationInfo(location.getFile().getAbsolutePath(), location.getStartLine(),
51-
location.getStartColumn(), location.getEndLine(), location.getEndColumn())
52-
)
53-
}
54-
}
55-
56-
import MakeTest<MergeTests<DataFlowTest, TaintFlowTest>>
2+
import TestUtilities.InlineFlowTest
3+
import DefaultFlowTest

go/ql/test/library-tests/semmle/go/dataflow/ArrayConversion/main.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,10 @@ func main() {
1616
var a [4]string
1717
a[0] = source()
1818
alias := sliceToArray(a[:])
19-
sink(alias[0]) // $ taintflow
19+
sink(alias[0]) // $ hasTaintFlow="index expression"
2020

2121
// Compare with the standard dataflow support for arrays
2222
var b [4]string
2323
b[0] = source()
24-
sink(b[0]) // $ taintflow
24+
sink(b[0]) // $ hasTaintFlow="index expression"
2525
}
Lines changed: 2 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -1,58 +1,5 @@
11
import go
22
import semmle.go.dataflow.ExternalFlow
33
import ModelValidation
4-
import TestUtilities.InlineExpectationsTest
5-
6-
class DataConfiguration extends DataFlow::Configuration {
7-
DataConfiguration() { this = "data-configuration" }
8-
9-
override predicate isSource(DataFlow::Node source) {
10-
source = any(DataFlow::CallNode c | c.getCalleeName() = "source").getResult(0)
11-
}
12-
13-
override predicate isSink(DataFlow::Node sink) {
14-
sink = any(DataFlow::CallNode c | c.getCalleeName() = "sink").getArgument(0)
15-
}
16-
}
17-
18-
module DataFlowTest implements TestSig {
19-
string getARelevantTag() { result = "dataflow" }
20-
21-
predicate hasActualResult(Location location, string element, string tag, string value) {
22-
tag = "dataflow" and
23-
exists(DataFlow::Node sink | any(DataConfiguration c).hasFlow(_, sink) |
24-
element = sink.toString() and
25-
value = "" and
26-
sink.hasLocationInfo(location.getFile().getAbsolutePath(), location.getStartLine(),
27-
location.getStartColumn(), location.getEndLine(), location.getEndColumn())
28-
)
29-
}
30-
}
31-
32-
class TaintConfiguration extends TaintTracking::Configuration {
33-
TaintConfiguration() { this = "taint-configuration" }
34-
35-
override predicate isSource(DataFlow::Node source) {
36-
source = any(DataFlow::CallNode c | c.getCalleeName() = "source").getResult(0)
37-
}
38-
39-
override predicate isSink(DataFlow::Node sink) {
40-
sink = any(DataFlow::CallNode c | c.getCalleeName() = "sink").getArgument(0)
41-
}
42-
}
43-
44-
module TaintFlowTest implements TestSig {
45-
string getARelevantTag() { result = "taintflow" }
46-
47-
predicate hasActualResult(Location location, string element, string tag, string value) {
48-
tag = "taintflow" and
49-
exists(DataFlow::Node sink | any(TaintConfiguration c).hasFlow(_, sink) |
50-
element = sink.toString() and
51-
value = "" and
52-
sink.hasLocationInfo(location.getFile().getAbsolutePath(), location.getStartLine(),
53-
location.getStartColumn(), location.getEndLine(), location.getEndColumn())
54-
)
55-
}
56-
}
57-
58-
import MakeTest<MergeTests<DataFlowTest, TaintFlowTest>>
4+
import TestUtilities.InlineFlowTest
5+
import DefaultFlowTest

go/ql/test/library-tests/semmle/go/dataflow/ExternalFlowVarArgs/main.go

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -13,26 +13,26 @@ func sink(string) {
1313

1414
func main() {
1515
s := source()
16-
sink(test.FunctionWithParameter(s)) // $ taintflow dataflow
16+
sink(test.FunctionWithParameter(s)) // $ hasValueFlow="call to FunctionWithParameter"
1717

1818
stringSlice := []string{source()}
19-
sink(stringSlice[0]) // $ taintflow dataflow
19+
sink(stringSlice[0]) // $ hasValueFlow="index expression"
2020

2121
s0 := ""
2222
s1 := source()
2323
sSlice := []string{s0, s1}
24-
sink(test.FunctionWithParameter(sSlice[1])) // $ taintflow dataflow
25-
sink(test.FunctionWithSliceParameter(sSlice)) // $ taintflow dataflow
26-
sink(test.FunctionWithVarArgsParameter(sSlice...)) // $ taintflow dataflow
27-
sink(test.FunctionWithVarArgsParameter(s0, s1)) // $ taintflow dataflow
24+
sink(test.FunctionWithParameter(sSlice[1])) // $ hasValueFlow="call to FunctionWithParameter"
25+
sink(test.FunctionWithSliceParameter(sSlice)) // $ hasValueFlow="call to FunctionWithSliceParameter"
26+
sink(test.FunctionWithVarArgsParameter(sSlice...)) // $ hasValueFlow="call to FunctionWithVarArgsParameter"
27+
sink(test.FunctionWithVarArgsParameter(s0, s1)) // $ hasValueFlow="call to FunctionWithVarArgsParameter"
2828

2929
sliceOfStructs := []test.A{{Field: source()}}
30-
sink(sliceOfStructs[0].Field) // $ taintflow dataflow
30+
sink(sliceOfStructs[0].Field) // $ hasValueFlow="selection of Field"
3131

3232
a0 := test.A{Field: ""}
3333
a1 := test.A{Field: source()}
3434
aSlice := []test.A{a0, a1}
35-
sink(test.FunctionWithSliceOfStructsParameter(aSlice)) // $ taintflow dataflow
36-
sink(test.FunctionWithVarArgsOfStructsParameter(aSlice...)) // $ taintflow dataflow
37-
sink(test.FunctionWithVarArgsOfStructsParameter(a0, a1)) // $ taintflow dataflow
35+
sink(test.FunctionWithSliceOfStructsParameter(aSlice)) // $ hasValueFlow="call to FunctionWithSliceOfStructsParameter"
36+
sink(test.FunctionWithVarArgsOfStructsParameter(aSlice...)) // $ hasValueFlow="call to FunctionWithVarArgsOfStructsParameter"
37+
sink(test.FunctionWithVarArgsOfStructsParameter(a0, a1)) // $ hasValueFlow="call to FunctionWithVarArgsOfStructsParameter"
3838
}

0 commit comments

Comments
 (0)