Fix external flow tests

This commit is contained in:
Owen Mansel-Chan
2021-11-23 20:28:20 -05:00
parent 71bf834765
commit 8f7a34f9cb
5 changed files with 50 additions and 10 deletions

View File

@@ -0,0 +1,39 @@
invalidModelRow
edges
| file://:0:0:0:0 | [summary] to write: array of return (return[0]) in StepArgResContent : interface type | file://:0:0:0:0 | [summary] to write: return (return[0]) in StepArgResContent [array] : interface type |
| file://:0:0:0:0 | parameter 0 of StepArgRes : interface type | file://:0:0:0:0 | [summary] to write: return (return[0]) in StepArgRes : interface type |
| file://:0:0:0:0 | parameter 0 of StepArgResContent : interface type | file://:0:0:0:0 | [summary] to write: array of return (return[0]) in StepArgResContent : interface type |
| test.go:51:9:51:16 | call to Src1 : interface type | test.go:53:24:53:26 | src : interface type |
| test.go:53:11:53:27 | call to StepArgRes : interface type | test.go:55:10:55:14 | taint |
| test.go:53:24:53:26 | src : interface type | file://:0:0:0:0 | parameter 0 of StepArgRes : interface type |
| test.go:53:24:53:26 | src : interface type | test.go:53:11:53:27 | call to StepArgRes : interface type |
| test.go:62:9:62:16 | call to Src1 : interface type | test.go:64:34:64:36 | src : interface type |
| test.go:64:11:64:37 | call to StepArgResContent [array] : interface type | test.go:66:10:66:14 | taint [array] : interface type |
| test.go:64:34:64:36 | src : interface type | file://:0:0:0:0 | parameter 0 of StepArgResContent : interface type |
| test.go:64:34:64:36 | src : interface type | test.go:64:11:64:37 | call to StepArgResContent [array] : interface type |
| test.go:66:10:66:14 | taint [array] : interface type | test.go:66:10:66:17 | index expression |
| test.go:73:9:73:16 | call to Src1 : interface type | test.go:78:10:78:17 | index expression |
nodes
| file://:0:0:0:0 | [summary] to write: array of return (return[0]) in StepArgResContent : interface type | semmle.label | [summary] to write: array of return (return[0]) in StepArgResContent : interface type |
| file://:0:0:0:0 | [summary] to write: return (return[0]) in StepArgRes : interface type | semmle.label | [summary] to write: return (return[0]) in StepArgRes : interface type |
| file://:0:0:0:0 | [summary] to write: return (return[0]) in StepArgResContent [array] : interface type | semmle.label | [summary] to write: return (return[0]) in StepArgResContent [array] : interface type |
| file://:0:0:0:0 | parameter 0 of StepArgRes : interface type | semmle.label | parameter 0 of StepArgRes : interface type |
| file://:0:0:0:0 | parameter 0 of StepArgResContent : interface type | semmle.label | parameter 0 of StepArgResContent : interface type |
| test.go:51:9:51:16 | call to Src1 : interface type | semmle.label | call to Src1 : interface type |
| test.go:53:11:53:27 | call to StepArgRes : interface type | semmle.label | call to StepArgRes : interface type |
| test.go:53:24:53:26 | src : interface type | semmle.label | src : interface type |
| test.go:55:10:55:14 | taint | semmle.label | taint |
| test.go:62:9:62:16 | call to Src1 : interface type | semmle.label | call to Src1 : interface type |
| test.go:64:11:64:37 | call to StepArgResContent [array] : interface type | semmle.label | call to StepArgResContent [array] : interface type |
| test.go:64:34:64:36 | src : interface type | semmle.label | src : interface type |
| test.go:66:10:66:14 | taint [array] : interface type | semmle.label | taint [array] : interface type |
| test.go:66:10:66:17 | index expression | semmle.label | index expression |
| test.go:73:9:73:16 | call to Src1 : interface type | semmle.label | call to Src1 : interface type |
| test.go:78:10:78:17 | index expression | semmle.label | index expression |
subpaths
| test.go:53:24:53:26 | src : interface type | file://:0:0:0:0 | parameter 0 of StepArgRes : interface type | file://:0:0:0:0 | [summary] to write: return (return[0]) in StepArgRes : interface type | test.go:53:11:53:27 | call to StepArgRes : interface type |
| test.go:64:34:64:36 | src : interface type | file://:0:0:0:0 | parameter 0 of StepArgResContent : interface type | file://:0:0:0:0 | [summary] to write: return (return[0]) in StepArgResContent [array] : interface type | test.go:64:11:64:37 | call to StepArgResContent [array] : interface type |
#select
| test.go:51:9:51:16 | call to Src1 : interface type | test.go:51:9:51:16 | call to Src1 : interface type | test.go:55:10:55:14 | taint | path |
| test.go:62:9:62:16 | call to Src1 : interface type | test.go:62:9:62:16 | call to Src1 : interface type | test.go:66:10:66:17 | index expression | path |
| test.go:73:9:73:16 | call to Src1 : interface type | test.go:73:9:73:16 | call to Src1 : interface type | test.go:78:10:78:17 | index expression | path |

View File

@@ -7,13 +7,13 @@ import semmle.go.dataflow.DataFlow
import semmle.go.dataflow.ExternalFlow
import semmle.go.dataflow.internal.FlowSummaryImpl as FlowSummaryImpl
import CsvValidation
import DataFlow::PartialPathGraph
import DataFlow::PathGraph
class SummaryModelTest extends SummaryModelCsv {
override predicate row(string row) {
row =
[
//`namespace; type; subtypes; name; signature; ext; input; output; kind`
"github.com/nonexistent/test;;false;StepArgResContent;;;Argument[0];ArrayElement of ReturnValue;taint",
"github.com/nonexistent/test;T;false;StepArgRes;;;Argument[0];ReturnValue;taint"
]
@@ -46,14 +46,8 @@ class Config extends TaintTracking::Configuration {
override predicate isSource(DataFlow::Node src) { sourceNode(src, "qltest") }
override predicate isSink(DataFlow::Node src) { sinkNode(src, "qltest") }
override int explorationLimit() { result = 10}
}
/* from Config cfg, DataFlow::PathNode src, DataFlow::PathNode sink
from Config cfg, DataFlow::PathNode src, DataFlow::PathNode sink
where cfg.hasFlowPath(src, sink)
select src, src, sink, "path" */
from Config cfg, DataFlow::PartialPathNode src, DataFlow::PartialPathNode sink
where cfg.hasPartialFlow(src, sink, _) and not edges(sink, _)
select src, src, sink, "path", sink.toString(), sink.getAQlClass()
select src, src, sink, "path"

View File

@@ -1,3 +1,6 @@
invalidModelRow
#select
| test.go:40:10:40:12 | arg | qltest |
| test.go:55:10:55:14 | taint | qltest |
| test.go:66:10:66:17 | index expression | qltest |
| test.go:78:10:78:17 | index expression | qltest |

View File

@@ -9,3 +9,6 @@ invalidModelRow
| test.go:34:2:34:21 | ... = ...[0] | qltest |
| test.go:34:2:34:21 | ... = ...[1] | qltest-w-subtypes |
| test.go:35:2:35:22 | ... = ...[1] | qltest-w-subtypes |
| test.go:51:9:51:16 | call to Src1 | qltest |
| test.go:62:9:62:16 | call to Src1 | qltest |
| test.go:73:9:73:16 | call to Src1 | qltest |

View File

@@ -7,3 +7,4 @@ invalidModelRow
| test.go:20:10:20:10 | t | test.go:20:10:20:24 | call to StepQualRes |
| test.go:21:2:21:2 | t | test.go:11:6:11:8 | definition of arg |
| test.go:22:32:22:34 | arg | test.go:22:10:22:35 | call to StepArgResNoQual |
| test.go:53:24:53:26 | src | test.go:53:11:53:27 | call to StepArgRes |