Skip to content

Commit eab1569

Browse files
committed
Update ExternalValueFlow to use value flow
1 parent c816412 commit eab1569

File tree

5 files changed

+55
-55
lines changed

5 files changed

+55
-55
lines changed

go/ql/test/library-tests/semmle/go/dataflow/ExternalValueFlow/completetest.ext.yml

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -3,21 +3,21 @@ extensions:
33
pack: codeql/go-all
44
extensible: summaryModel
55
data:
6-
- ["github.com/nonexistent/test", "T", False, "StepArgRes", "", "", "Argument[0]", "ReturnValue", "taint", "manual"]
7-
- ["github.com/nonexistent/test", "T", False, "StepArgRes1", "", "", "Argument[0]", "ReturnValue[1]", "taint", "manual"]
8-
- ["github.com/nonexistent/test", "T", False, "StepArgArg", "", "", "Argument[0]", "Argument[1]", "taint", "manual"]
9-
- ["github.com/nonexistent/test", "T", False, "StepArgQual", "", "", "Argument[0]", "Argument[-1]", "taint", "manual"]
10-
- ["github.com/nonexistent/test", "T", False, "StepQualRes", "", "", "Argument[-1]", "ReturnValue", "taint", "manual"]
11-
- ["github.com/nonexistent/test", "T", False, "StepQualArg", "", "", "Argument[-1]", "Argument[0]", "taint", "manual"]
12-
- ["github.com/nonexistent/test", "", False, "StepArgResNoQual", "", "", "Argument[0]", "ReturnValue", "taint", "manual"]
13-
- ["github.com/nonexistent/test", "", False, "StepArgResArrayContent", "", "", "Argument[0]", "ReturnValue.ArrayElement", "taint", "manual"]
14-
- ["github.com/nonexistent/test", "", False, "StepArgArrayContentRes", "", "", "Argument[0].ArrayElement", "ReturnValue", "taint", "manual"]
15-
- ["github.com/nonexistent/test", "", False, "StepArgResCollectionContent", "", "", "Argument[0]", "ReturnValue.Element", "taint", "manual"]
16-
- ["github.com/nonexistent/test", "", False, "StepArgCollectionContentRes", "", "", "Argument[0].Element", "ReturnValue", "taint", "manual"]
17-
- ["github.com/nonexistent/test", "", False, "StepArgResMapKeyContent", "", "", "Argument[0]", "ReturnValue.MapKey", "taint", "manual"]
18-
- ["github.com/nonexistent/test", "", False, "StepArgMapKeyContentRes", "", "", "Argument[0].MapKey", "ReturnValue", "taint", "manual"]
19-
- ["github.com/nonexistent/test", "", False, "StepArgResMapValueContent", "", "", "Argument[0]", "ReturnValue.MapValue", "taint", "manual"]
20-
- ["github.com/nonexistent/test", "", False, "StepArgMapValueContentRes", "", "", "Argument[0].MapValue", "ReturnValue", "taint", "manual"]
6+
- ["github.com/nonexistent/test", "T", False, "StepArgRes", "", "", "Argument[0]", "ReturnValue", "value", "manual"]
7+
- ["github.com/nonexistent/test", "T", False, "StepArgRes1", "", "", "Argument[0]", "ReturnValue[1]", "value", "manual"]
8+
- ["github.com/nonexistent/test", "T", False, "StepArgArg", "", "", "Argument[0]", "Argument[1]", "value", "manual"]
9+
- ["github.com/nonexistent/test", "T", False, "StepArgQual", "", "", "Argument[0]", "Argument[-1]", "value", "manual"]
10+
- ["github.com/nonexistent/test", "T", False, "StepQualRes", "", "", "Argument[-1]", "ReturnValue", "value", "manual"]
11+
- ["github.com/nonexistent/test", "T", False, "StepQualArg", "", "", "Argument[-1]", "Argument[0]", "value", "manual"]
12+
- ["github.com/nonexistent/test", "", False, "StepArgResNoQual", "", "", "Argument[0]", "ReturnValue", "value", "manual"]
13+
- ["github.com/nonexistent/test", "", False, "StepArgResArrayContent", "", "", "Argument[0]", "ReturnValue.ArrayElement", "value", "manual"]
14+
- ["github.com/nonexistent/test", "", False, "StepArgArrayContentRes", "", "", "Argument[0].ArrayElement", "ReturnValue", "value", "manual"]
15+
- ["github.com/nonexistent/test", "", False, "StepArgResCollectionContent", "", "", "Argument[0]", "ReturnValue.Element", "value", "manual"]
16+
- ["github.com/nonexistent/test", "", False, "StepArgCollectionContentRes", "", "", "Argument[0].Element", "ReturnValue", "value", "manual"]
17+
- ["github.com/nonexistent/test", "", False, "StepArgResMapKeyContent", "", "", "Argument[0]", "ReturnValue.MapKey", "value", "manual"]
18+
- ["github.com/nonexistent/test", "", False, "StepArgMapKeyContentRes", "", "", "Argument[0].MapKey", "ReturnValue", "value", "manual"]
19+
- ["github.com/nonexistent/test", "", False, "StepArgResMapValueContent", "", "", "Argument[0]", "ReturnValue.MapValue", "value", "manual"]
20+
- ["github.com/nonexistent/test", "", False, "StepArgMapValueContentRes", "", "", "Argument[0].MapValue", "ReturnValue", "value", "manual"]
2121
- ["github.com/nonexistent/test", "", False, "GetElement", "", "", "Argument[0].Element", "ReturnValue", "value", "manual"]
2222
- ["github.com/nonexistent/test", "", False, "GetMapKey", "", "", "Argument[0].MapKey", "ReturnValue", "value", "manual"]
2323
- ["github.com/nonexistent/test", "", False, "SetElement", "", "", "Argument[0]", "ReturnValue.Element", "value", "manual"]

go/ql/test/library-tests/semmle/go/dataflow/ExternalValueFlow/completetest.ql

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,4 +14,4 @@ module Config implements DataFlow::ConfigSig {
1414
predicate isSink(DataFlow::Node src) { sinkNode(src, "qltest") }
1515
}
1616

17-
import TaintFlowTest<Config>
17+
import ValueFlowTest<Config>

go/ql/test/library-tests/semmle/go/dataflow/ExternalValueFlow/steps.ext.yml

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,12 @@ extensions:
33
pack: codeql/go-all
44
extensible: summaryModel
55
data:
6-
- ["github.com/nonexistent/test", "T", False, "StepArgRes", "", "", "Argument[0]", "ReturnValue", "taint", "manual"]
7-
- ["github.com/nonexistent/test", "T", False, "StepArgRes1", "", "", "Argument[0]", "ReturnValue[1]", "taint", "manual"]
8-
- ["github.com/nonexistent/test", "T", False, "StepArgArg", "", "", "Argument[0]", "Argument[1]", "taint", "manual"]
9-
- ["github.com/nonexistent/test", "T", False, "StepArgQual", "", "", "Argument[0]", "Argument[-1]", "taint", "manual"]
10-
- ["github.com/nonexistent/test", "T", False, "StepQualRes", "", "", "Argument[-1]", "ReturnValue", "taint", "manual"]
11-
- ["github.com/nonexistent/test", "T", False, "StepQualArg", "", "", "Argument[-1]", "Argument[0]", "taint", "manual"]
12-
- ["github.com/nonexistent/test", "", False, "StepArgResNoQual", "", "", "Argument[0]", "ReturnValue", "taint", "manual"]
13-
- ["github.com/nonexistent/test", "", False, "StepArgResContent", "", "", "Argument[0]", "ReturnValue.ArrayElement", "taint", "manual"]
14-
- ["github.com/nonexistent/test", "", False, "StepArgContentRes", "", "", "Argument[0].ArrayElement", "ReturnValue", "taint", "manual"]
6+
- ["github.com/nonexistent/test", "T", False, "StepArgRes", "", "", "Argument[0]", "ReturnValue", "value", "manual"]
7+
- ["github.com/nonexistent/test", "T", False, "StepArgRes1", "", "", "Argument[0]", "ReturnValue[1]", "value", "manual"]
8+
- ["github.com/nonexistent/test", "T", False, "StepArgArg", "", "", "Argument[0]", "Argument[1]", "value", "manual"]
9+
- ["github.com/nonexistent/test", "T", False, "StepArgQual", "", "", "Argument[0]", "Argument[-1]", "value", "manual"]
10+
- ["github.com/nonexistent/test", "T", False, "StepQualRes", "", "", "Argument[-1]", "ReturnValue", "value", "manual"]
11+
- ["github.com/nonexistent/test", "T", False, "StepQualArg", "", "", "Argument[-1]", "Argument[0]", "value", "manual"]
12+
- ["github.com/nonexistent/test", "", False, "StepArgResNoQual", "", "", "Argument[0]", "ReturnValue", "value", "manual"]
13+
- ["github.com/nonexistent/test", "", False, "StepArgResContent", "", "", "Argument[0]", "ReturnValue.ArrayElement", "value", "manual"]
14+
- ["github.com/nonexistent/test", "", False, "StepArgContentRes", "", "", "Argument[0].ArrayElement", "ReturnValue", "value", "manual"]

go/ql/test/library-tests/semmle/go/dataflow/ExternalValueFlow/steps.ql

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,5 +4,5 @@ import ModelValidation
44
import semmle.go.dataflow.internal.FlowSummaryImpl as FlowSummaryImpl
55

66
from DataFlow::Node node1, DataFlow::Node node2
7-
where FlowSummaryImpl::Private::Steps::summaryThroughStepTaint(node1, node2, _)
7+
where FlowSummaryImpl::Private::Steps::summaryThroughStepValue(node1, node2, _)
88
select node1, node2

go/ql/test/library-tests/semmle/go/dataflow/ExternalValueFlow/test.go

Lines changed: 29 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -58,108 +58,108 @@ func simpleflow() {
5858
src := a.Src1()
5959

6060
taint1 := t.StepArgRes(src)
61-
b.Sink1(taint1) // $ hasTaintFlow="taint1"
61+
b.Sink1(taint1) // $ hasValueFlow="taint1"
6262

6363
_, taint2 := t.StepArgRes1(src)
64-
b.Sink1(taint2) // $ hasTaintFlow="taint2"
64+
b.Sink1(taint2) // $ hasValueFlow="taint2"
6565

6666
var taint3 interface{}
6767
t.StepArgArg(src, taint3)
68-
b.Sink1(taint3) // $ hasTaintFlow="taint3"
68+
b.Sink1(taint3) // $ hasValueFlow="taint3"
6969

7070
var taint4 test.T
7171
taint4.StepArgQual(src)
72-
b.Sink1(taint4) // $ hasTaintFlow="taint4"
72+
b.Sink1(taint4) // $ hasValueFlow="taint4"
7373

7474
taint5 := (src.(*test.T)).StepQualRes()
75-
b.Sink1(taint5) // $ hasTaintFlow="taint5"
75+
b.Sink1(taint5) // $ hasValueFlow="taint5"
7676

7777
var taint6 interface{}
7878
(src.(*test.T)).StepQualArg(taint6)
79-
b.Sink1(taint6) // $ hasTaintFlow="taint6"
79+
b.Sink1(taint6) // $ hasValueFlow="taint6"
8080

8181
taint7 := test.StepArgResNoQual(src)
82-
b.Sink1(taint7) // $ hasTaintFlow="taint7"
82+
b.Sink1(taint7) // $ hasValueFlow="taint7"
8383

8484
taint8 := test.StepArgResArrayContent(src)
85-
b.Sink1(taint8[0]) // $ hasTaintFlow="index expression"
85+
b.Sink1(taint8[0]) // $ hasValueFlow="index expression"
8686

8787
srcArray := []interface{}{nil, src}
8888
taint9 := test.StepArgArrayContentRes(srcArray)
89-
b.Sink1(taint9) // $ hasTaintFlow="taint9"
89+
b.Sink1(taint9) // $ hasValueFlow="taint9"
9090

9191
taint10 := test.StepArgResCollectionContent(a.Src1()).(chan interface{})
92-
b.Sink1(test.GetElement(taint10)) // $ hasTaintFlow="call to GetElement"
93-
b.Sink1(<-taint10) // $ hasTaintFlow="<-..."
92+
b.Sink1(test.GetElement(taint10)) // $ hasValueFlow="call to GetElement"
93+
b.Sink1(<-taint10) // $ hasValueFlow="<-..."
9494

9595
srcCollection := test.SetElement(a.Src1())
9696
taint11 := test.StepArgCollectionContentRes(srcCollection)
97-
b.Sink1(taint11) // $ hasTaintFlow="taint11"
97+
b.Sink1(taint11) // $ hasValueFlow="taint11"
9898

9999
taint12 := test.StepArgResMapKeyContent(a.Src1()).(map[string]string)
100-
b.Sink1(test.GetMapKey(taint12)) // $ hasTaintFlow="call to GetMapKey"
100+
b.Sink1(test.GetMapKey(taint12)) // $ hasValueFlow="call to GetMapKey"
101101
for k, _ := range taint12 {
102-
b.Sink1(k) // $ hasTaintFlow="k"
102+
b.Sink1(k) // $ hasValueFlow="k"
103103
}
104104
for k := range taint12 {
105-
b.Sink1(k) // $ hasTaintFlow="k"
105+
b.Sink1(k) // $ hasValueFlow="k"
106106
}
107107

108108
srcMap13 := map[string]string{src.(string): ""}
109109
taint13 := test.StepArgMapKeyContentRes(srcMap13)
110-
b.Sink1(taint13) // $ hasTaintFlow="taint13"
110+
b.Sink1(taint13) // $ hasValueFlow="taint13"
111111

112112
taint14 := test.StepArgResMapValueContent(src).(map[string]string)
113-
b.Sink1(taint14[""]) // $ hasTaintFlow="index expression"
113+
b.Sink1(taint14[""]) // $ hasValueFlow="index expression"
114114

115115
srcMap15 := map[string]string{"": src.(string)}
116116
taint15 := test.StepArgMapValueContentRes(srcMap15)
117-
b.Sink1(taint15) // $ hasTaintFlow="taint15"
117+
b.Sink1(taint15) // $ hasValueFlow="taint15"
118118

119119
slice := make([]interface{}, 0)
120120
slice = append(slice, src)
121-
b.Sink1(slice[0]) // $ hasTaintFlow="index expression"
121+
b.Sink1(slice[0]) // $ hasValueFlow="index expression"
122122

123123
ch := make(chan string)
124124
ch <- a.Src1().(string)
125125
taint16 := test.StepArgCollectionContentRes(ch)
126-
b.Sink1(taint16) // $ MISSING: hasTaintFlow="taint16" // currently fails due to lack of post-update nodes after send statements
126+
b.Sink1(taint16) // $ MISSING: hasValueFlow="taint16" // currently fails due to lack of post-update nodes after send statements
127127

128128
c1 := test.C{""}
129129
c1.Set(a.Src1().(string))
130-
b.Sink1(c1.F) // $ hasTaintFlow="selection of F"
130+
b.Sink1(c1.F) // $ hasValueFlow="selection of F"
131131

132132
c2 := test.C{a.Src1().(string)}
133-
b.Sink1(c2.Get()) // $ hasTaintFlow="call to Get"
133+
b.Sink1(c2.Get()) // $ hasValueFlow="call to Get"
134134

135135
c3 := test.C{""}
136136
c3.Set(a.Src1().(string))
137-
b.Sink1(c3.Get()) // $ hasTaintFlow="call to Get"
137+
b.Sink1(c3.Get()) // $ hasValueFlow="call to Get"
138138

139139
c4 := test.C{""}
140140
c4.Set(a.Src1().(string))
141141
c4.Set("")
142-
b.Sink1(c4.Get()) // $ SPURIOUS: hasTaintFlow="call to Get" // because we currently don't clear content
142+
b.Sink1(c4.Get()) // $ SPURIOUS: hasValueFlow="call to Get" // because we currently don't clear content
143143

144144
cp1 := &test.C{""}
145145
cp1.SetThroughPointer(a.Src1().(string))
146-
b.Sink1(cp1.F) // $ hasTaintFlow="selection of F"
146+
b.Sink1(cp1.F) // $ hasValueFlow="selection of F"
147147

148148
cp2 := &test.C{a.Src1().(string)}
149-
b.Sink1(cp2.GetThroughPointer()) // $ hasTaintFlow="call to GetThroughPointer"
149+
b.Sink1(cp2.GetThroughPointer()) // $ hasValueFlow="call to GetThroughPointer"
150150

151151
cp3 := &test.C{""}
152152
cp3.SetThroughPointer(a.Src1().(string))
153-
b.Sink1(cp3.GetThroughPointer()) // $ hasTaintFlow="call to GetThroughPointer"
153+
b.Sink1(cp3.GetThroughPointer()) // $ hasValueFlow="call to GetThroughPointer"
154154

155155
cp4 := &test.C{""}
156156
cp4.SetThroughPointer(a.Src1().(string))
157157
cp4.SetThroughPointer("")
158-
b.Sink1(cp4.GetThroughPointer()) // $ SPURIOUS: hasTaintFlow="call to GetThroughPointer" // because we currently don't clear content
158+
b.Sink1(cp4.GetThroughPointer()) // $ SPURIOUS: hasValueFlow="call to GetThroughPointer" // because we currently don't clear content
159159

160160
arg1 := src
161161
arg2 := src
162162
arg3 := src
163163
arg4 := src
164-
b.SinkManyArgs(arg1, arg2, arg3, arg4) // $ hasTaintFlow="arg1" hasTaintFlow="arg2" hasTaintFlow="arg3"
164+
b.SinkManyArgs(arg1, arg2, arg3, arg4) // $ hasValueFlow="arg1" hasValueFlow="arg2" hasValueFlow="arg3"
165165
}

0 commit comments

Comments
 (0)