diff --git a/ql/lib/semmle/go/dataflow/ExternalFlow.qll b/ql/lib/semmle/go/dataflow/ExternalFlow.qll index 91df8a7f25e..1716fa33ef7 100644 --- a/ql/lib/semmle/go/dataflow/ExternalFlow.qll +++ b/ql/lib/semmle/go/dataflow/ExternalFlow.qll @@ -79,8 +79,8 @@ private class BuiltinModel extends SummaryModelCsv { override predicate row(string row) { row = [ - ";;false;append;;;ArrayElement of Argument[0];ArrayElement of ReturnValue;value", - ";;false;append;;;Argument[1];ArrayElement of ReturnValue;value" + ";;false;append;;;Argument[0].ArrayElement;ReturnValue.ArrayElement;value", + ";;false;append;;;Argument[1];ReturnValue.ArrayElement;value" ] } } diff --git a/ql/lib/semmle/go/frameworks/stdlib/NetHttp.qll b/ql/lib/semmle/go/frameworks/stdlib/NetHttp.qll index ae6fcd2a582..05ecba7dd19 100644 --- a/ql/lib/semmle/go/frameworks/stdlib/NetHttp.qll +++ b/ql/lib/semmle/go/frameworks/stdlib/NetHttp.qll @@ -10,7 +10,7 @@ private class FlowSources extends SourceModelCsv { row = [ "net/http;Request;true;Cookie;;;ReturnValue[0];remote", - "net/http;Request;true;Cookies;;;ArrayElement of ReturnValue;remote", + "net/http;Request;true;Cookies;;;ReturnValue.ArrayElement;remote", "net/http;Request;true;FormFile;;;ReturnValue[0..1];remote", "net/http;Request;true;FormValue;;;ReturnValue;remote", "net/http;Request;true;MultipartReader;;;ReturnValue[0];remote", 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 f705665c33c..7f06ab01327 100644 --- a/ql/test/library-tests/semmle/go/dataflow/ExternalFlow/completetest.ql +++ b/ql/test/library-tests/semmle/go/dataflow/ExternalFlow/completetest.ql @@ -21,19 +21,19 @@ class SummaryModelTest extends SummaryModelCsv { "github.com/nonexistent/test;T;false;StepQualRes;;;Argument[-1];ReturnValue;taint", "github.com/nonexistent/test;T;false;StepQualArg;;;Argument[-1];Argument[0];taint", "github.com/nonexistent/test;;false;StepArgResNoQual;;;Argument[0];ReturnValue;taint", - "github.com/nonexistent/test;;false;StepArgResArrayContent;;;Argument[0];ArrayElement of ReturnValue;taint", - "github.com/nonexistent/test;;false;StepArgArrayContentRes;;;ArrayElement of Argument[0];ReturnValue;taint", - "github.com/nonexistent/test;;false;StepArgResCollectionContent;;;Argument[0];Element of ReturnValue;taint", - "github.com/nonexistent/test;;false;StepArgCollectionContentRes;;;Element of Argument[0];ReturnValue;taint", - "github.com/nonexistent/test;;false;StepArgResMapKeyContent;;;Argument[0];MapKey of ReturnValue;taint", - "github.com/nonexistent/test;;false;StepArgMapKeyContentRes;;;MapKey of Argument[0];ReturnValue;taint", - "github.com/nonexistent/test;;false;StepArgResMapValueContent;;;Argument[0];MapValue of ReturnValue;taint", - "github.com/nonexistent/test;;false;StepArgMapValueContentRes;;;MapValue of Argument[0];ReturnValue;taint", - "github.com/nonexistent/test;;false;GetElement;;;Element of Argument[0];ReturnValue;value", - "github.com/nonexistent/test;;false;GetMapKey;;;MapKey of Argument[0];ReturnValue;value", - "github.com/nonexistent/test;;false;SetElement;;;Argument[0];Element of ReturnValue;value", - "github.com/nonexistent/test;C;false;Get;;;Field[github.com/nonexistent/test.C.F] of Argument[-1];ReturnValue;value", - "github.com/nonexistent/test;C;false;Set;;;Argument[0];Field[github.com/nonexistent/test.C.F] of Argument[-1];value", + "github.com/nonexistent/test;;false;StepArgResArrayContent;;;Argument[0];ReturnValue.ArrayElement;taint", + "github.com/nonexistent/test;;false;StepArgArrayContentRes;;;Argument[0].ArrayElement;ReturnValue;taint", + "github.com/nonexistent/test;;false;StepArgResCollectionContent;;;Argument[0];ReturnValue.Element;taint", + "github.com/nonexistent/test;;false;StepArgCollectionContentRes;;;Argument[0].Element;ReturnValue;taint", + "github.com/nonexistent/test;;false;StepArgResMapKeyContent;;;Argument[0];ReturnValue.MapKey;taint", + "github.com/nonexistent/test;;false;StepArgMapKeyContentRes;;;Argument[0].MapKey;ReturnValue;taint", + "github.com/nonexistent/test;;false;StepArgResMapValueContent;;;Argument[0];ReturnValue.MapValue;taint", + "github.com/nonexistent/test;;false;StepArgMapValueContentRes;;;Argument[0].MapValue;ReturnValue;taint", + "github.com/nonexistent/test;;false;GetElement;;;Argument[0].Element;ReturnValue;value", + "github.com/nonexistent/test;;false;GetMapKey;;;Argument[0].MapKey;ReturnValue;value", + "github.com/nonexistent/test;;false;SetElement;;;Argument[0];ReturnValue.Element;value", + "github.com/nonexistent/test;C;false;Get;;;Argument[-1].Field[github.com/nonexistent/test.C.F];ReturnValue;value", + "github.com/nonexistent/test;C;false;Set;;;Argument[0];Argument[-1].Field[github.com/nonexistent/test.C.F];value", ] } } diff --git a/ql/test/library-tests/semmle/go/dataflow/ExternalFlow/steps.ql b/ql/test/library-tests/semmle/go/dataflow/ExternalFlow/steps.ql index 62ec6a9bd91..8a635bf58e4 100644 --- a/ql/test/library-tests/semmle/go/dataflow/ExternalFlow/steps.ql +++ b/ql/test/library-tests/semmle/go/dataflow/ExternalFlow/steps.ql @@ -16,8 +16,8 @@ class SummaryModelTest extends SummaryModelCsv { "github.com/nonexistent/test;T;false;StepQualRes;;;Argument[-1];ReturnValue;taint", "github.com/nonexistent/test;T;false;StepQualArg;;;Argument[-1];Argument[0];taint", "github.com/nonexistent/test;;false;StepArgResNoQual;;;Argument[0];ReturnValue;taint", - "github.com/nonexistent/test;;false;StepArgResContent;;;Argument[0];ArrayElement of ReturnValue;taint", - "github.com/nonexistent/test;;false;StepArgContentRes;;;ArrayElement of Argument[0];ReturnValue;taint" + "github.com/nonexistent/test;;false;StepArgResContent;;;Argument[0];ReturnValue.ArrayElement;taint", + "github.com/nonexistent/test;;false;StepArgContentRes;;;Argument[0].ArrayElement;ReturnValue;taint" ] } } diff --git a/ql/test/library-tests/semmle/go/dataflow/ExternalFlowVarArgs/Flows.ql b/ql/test/library-tests/semmle/go/dataflow/ExternalFlowVarArgs/Flows.ql index 17aadd75852..b1f63d19a85 100644 --- a/ql/test/library-tests/semmle/go/dataflow/ExternalFlowVarArgs/Flows.ql +++ b/ql/test/library-tests/semmle/go/dataflow/ExternalFlowVarArgs/Flows.ql @@ -9,10 +9,10 @@ class SummaryModelTest extends SummaryModelCsv { [ //`namespace; type; subtypes; name; signature; ext; input; output; kind` "github.com/nonexistent/test;;false;FunctionWithParameter;;;Argument[0];ReturnValue;value", - "github.com/nonexistent/test;;false;FunctionWithSliceParameter;;;ArrayElement of Argument[0];ReturnValue;value", - "github.com/nonexistent/test;;false;FunctionWithVarArgsParameter;;;ArrayElement of Argument[0];ReturnValue;value", - "github.com/nonexistent/test;;false;FunctionWithSliceOfStructsParameter;;;Field[github.com/nonexistent/test.A.Field] of ArrayElement of Argument[0];ReturnValue;value", - "github.com/nonexistent/test;;false;FunctionWithVarArgsOfStructsParameter;;;Field[github.com/nonexistent/test.A.Field] of ArrayElement of Argument[0];ReturnValue;value" + "github.com/nonexistent/test;;false;FunctionWithSliceParameter;;;Argument[0].ArrayElement;ReturnValue;value", + "github.com/nonexistent/test;;false;FunctionWithVarArgsParameter;;;Argument[0].ArrayElement;ReturnValue;value", + "github.com/nonexistent/test;;false;FunctionWithSliceOfStructsParameter;;;Argument[0].ArrayElement.Field[github.com/nonexistent/test.A.Field];ReturnValue;value", + "github.com/nonexistent/test;;false;FunctionWithVarArgsOfStructsParameter;;;Argument[0].ArrayElement.Field[github.com/nonexistent/test.A.Field];ReturnValue;value" ] } }