From 8f7a34f9cbc7024079e95d772913087caa09f0e1 Mon Sep 17 00:00:00 2001 From: Owen Mansel-Chan Date: Tue, 23 Nov 2021 20:28:20 -0500 Subject: [PATCH] Fix external flow tests --- .../ExternalFlow/completetest.expected | 39 +++++++++++++++++++ .../go/dataflow/ExternalFlow/completetest.ql | 14 ++----- .../go/dataflow/ExternalFlow/sinks.expected | 3 ++ .../go/dataflow/ExternalFlow/srcs.expected | 3 ++ .../go/dataflow/ExternalFlow/steps.expected | 1 + 5 files changed, 50 insertions(+), 10 deletions(-) create mode 100644 ql/test/library-tests/semmle/go/dataflow/ExternalFlow/completetest.expected diff --git a/ql/test/library-tests/semmle/go/dataflow/ExternalFlow/completetest.expected b/ql/test/library-tests/semmle/go/dataflow/ExternalFlow/completetest.expected new file mode 100644 index 00000000000..9ca7531a4d6 --- /dev/null +++ b/ql/test/library-tests/semmle/go/dataflow/ExternalFlow/completetest.expected @@ -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 | diff --git a/ql/test/library-tests/semmle/go/dataflow/ExternalFlow/completetest.ql b/ql/test/library-tests/semmle/go/dataflow/ExternalFlow/completetest.ql index c3952b65703..a343357275a 100644 --- a/ql/test/library-tests/semmle/go/dataflow/ExternalFlow/completetest.ql +++ b/ql/test/library-tests/semmle/go/dataflow/ExternalFlow/completetest.ql @@ -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" diff --git a/ql/test/library-tests/semmle/go/dataflow/ExternalFlow/sinks.expected b/ql/test/library-tests/semmle/go/dataflow/ExternalFlow/sinks.expected index de1751aea90..650635b7c53 100644 --- a/ql/test/library-tests/semmle/go/dataflow/ExternalFlow/sinks.expected +++ b/ql/test/library-tests/semmle/go/dataflow/ExternalFlow/sinks.expected @@ -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 | diff --git a/ql/test/library-tests/semmle/go/dataflow/ExternalFlow/srcs.expected b/ql/test/library-tests/semmle/go/dataflow/ExternalFlow/srcs.expected index 1c9cfbdb953..7221991e900 100644 --- a/ql/test/library-tests/semmle/go/dataflow/ExternalFlow/srcs.expected +++ b/ql/test/library-tests/semmle/go/dataflow/ExternalFlow/srcs.expected @@ -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 | diff --git a/ql/test/library-tests/semmle/go/dataflow/ExternalFlow/steps.expected b/ql/test/library-tests/semmle/go/dataflow/ExternalFlow/steps.expected index 375470ab2a2..64874c3fea9 100644 --- a/ql/test/library-tests/semmle/go/dataflow/ExternalFlow/steps.expected +++ b/ql/test/library-tests/semmle/go/dataflow/ExternalFlow/steps.expected @@ -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 |