diff --git a/go/ql/lib/ext/archive.tar.model.json b/go/ql/lib/ext/archive.tar.model.json new file mode 100644 index 000000000000..e9953ab95f80 --- /dev/null +++ b/go/ql/lib/ext/archive.tar.model.json @@ -0,0 +1,17 @@ +{ + "extensions": [ + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "summaryModel" + }, + "data": [ + ["archive/tar", "", false, "FileInfoHeader", "", "", "Argument[0]", "ReturnValue[0]", "taint", "manual"], + ["archive/tar", "", false, "NewReader", "", "", "Argument[0]", "ReturnValue", "taint", "manual"], + ["archive/tar", "Header", true, "FileInfo", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"], + ["archive/tar", "Reader", true, "Next", "", "", "Argument[receiver]", "ReturnValue[0]", "taint", "manual"], + ["archive/tar", "Writer", true, "WriteHeader", "", "", "Argument[0]", "Argument[receiver]", "taint", "manual"] + ] + } + ] +} diff --git a/go/ql/lib/ext/archive.tar.model.yml b/go/ql/lib/ext/archive.tar.model.yml deleted file mode 100644 index f1212e35c022..000000000000 --- a/go/ql/lib/ext/archive.tar.model.yml +++ /dev/null @@ -1,10 +0,0 @@ -extensions: - - addsTo: - pack: codeql/go-all - extensible: summaryModel - data: - - ["archive/tar", "", False, "FileInfoHeader", "", "", "Argument[0]", "ReturnValue[0]", "taint", "manual"] - - ["archive/tar", "", False, "NewReader", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] - - ["archive/tar", "Header", True, "FileInfo", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] - - ["archive/tar", "Reader", True, "Next", "", "", "Argument[receiver]", "ReturnValue[0]", "taint", "manual"] - - ["archive/tar", "Writer", True, "WriteHeader", "", "", "Argument[0]", "Argument[receiver]", "taint", "manual"] diff --git a/go/ql/lib/ext/archive.zip.model.json b/go/ql/lib/ext/archive.zip.model.json new file mode 100644 index 000000000000..e403d9e8d48d --- /dev/null +++ b/go/ql/lib/ext/archive.zip.model.json @@ -0,0 +1,18 @@ +{ + "extensions": [ + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "summaryModel" + }, + "data": [ + ["archive/zip", "", false, "FileInfoHeader", "", "", "Argument[0]", "ReturnValue[0]", "taint", "manual"], + ["archive/zip", "", false, "NewReader", "", "", "Argument[0]", "ReturnValue[0]", "taint", "manual"], + ["archive/zip", "", false, "OpenReader", "", "", "Argument[0]", "ReturnValue[0]", "taint", "manual"], + ["archive/zip", "File", true, "Open", "", "", "Argument[receiver]", "ReturnValue[0]", "taint", "manual"], + ["archive/zip", "File", true, "OpenRaw", "", "", "Argument[receiver]", "ReturnValue[0]", "taint", "manual"], + ["archive/zip", "Writer", true, "Copy", "", "", "Argument[0]", "Argument[receiver]", "taint", "manual"] + ] + } + ] +} diff --git a/go/ql/lib/ext/archive.zip.model.yml b/go/ql/lib/ext/archive.zip.model.yml deleted file mode 100644 index 17e2bb0bd789..000000000000 --- a/go/ql/lib/ext/archive.zip.model.yml +++ /dev/null @@ -1,11 +0,0 @@ -extensions: - - addsTo: - pack: codeql/go-all - extensible: summaryModel - data: - - ["archive/zip", "", False, "FileInfoHeader", "", "", "Argument[0]", "ReturnValue[0]", "taint", "manual"] - - ["archive/zip", "", False, "NewReader", "", "", "Argument[0]", "ReturnValue[0]", "taint", "manual"] - - ["archive/zip", "", False, "OpenReader", "", "", "Argument[0]", "ReturnValue[0]", "taint", "manual"] - - ["archive/zip", "File", True, "Open", "", "", "Argument[receiver]", "ReturnValue[0]", "taint", "manual"] - - ["archive/zip", "File", True, "OpenRaw", "", "", "Argument[receiver]", "ReturnValue[0]", "taint", "manual"] - - ["archive/zip", "Writer", True, "Copy", "", "", "Argument[0]", "Argument[receiver]", "taint", "manual"] diff --git a/go/ql/lib/ext/bufio.model.json b/go/ql/lib/ext/bufio.model.json new file mode 100644 index 000000000000..d90cc09263d7 --- /dev/null +++ b/go/ql/lib/ext/bufio.model.json @@ -0,0 +1,29 @@ +{ + "extensions": [ + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "summaryModel" + }, + "data": [ + ["bufio", "", false, "NewReadWriter", "", "", "Argument[0]", "ReturnValue", "taint", "manual"], + ["bufio", "", false, "NewReader", "", "", "Argument[0]", "ReturnValue", "taint", "manual"], + ["bufio", "", false, "NewReaderSize", "", "", "Argument[0]", "ReturnValue", "taint", "manual"], + ["bufio", "", false, "NewScanner", "", "", "Argument[0]", "ReturnValue", "taint", "manual"], + ["bufio", "", false, "ScanBytes", "", "", "Argument[0]", "ReturnValue[1]", "taint", "manual"], + ["bufio", "", false, "ScanLines", "", "", "Argument[0]", "ReturnValue[1]", "taint", "manual"], + ["bufio", "", false, "ScanRunes", "", "", "Argument[0]", "ReturnValue[1]", "taint", "manual"], + ["bufio", "", false, "ScanWords", "", "", "Argument[0]", "ReturnValue[1]", "taint", "manual"], + ["bufio", "Reader", true, "Peek", "", "", "Argument[receiver]", "ReturnValue[0]", "taint", "manual"], + ["bufio", "Reader", true, "ReadBytes", "", "", "Argument[receiver]", "ReturnValue[0]", "taint", "manual"], + ["bufio", "Reader", true, "ReadLine", "", "", "Argument[receiver]", "ReturnValue[0]", "taint", "manual"], + ["bufio", "Reader", true, "ReadSlice", "", "", "Argument[receiver]", "ReturnValue[0]", "taint", "manual"], + ["bufio", "Reader", true, "ReadString", "", "", "Argument[receiver]", "ReturnValue[0]", "taint", "manual"], + ["bufio", "Reader", true, "Reset", "", "", "Argument[0]", "Argument[receiver]", "taint", "manual"], + ["bufio", "Scanner", true, "Bytes", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"], + ["bufio", "Scanner", true, "Text", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"], + ["bufio", "Writer", true, "Reset", "", "", "Argument[receiver]", "Argument[0]", "taint", "manual"] + ] + } + ] +} diff --git a/go/ql/lib/ext/bufio.model.yml b/go/ql/lib/ext/bufio.model.yml deleted file mode 100644 index e9dd22e66861..000000000000 --- a/go/ql/lib/ext/bufio.model.yml +++ /dev/null @@ -1,22 +0,0 @@ -extensions: - - addsTo: - pack: codeql/go-all - extensible: summaryModel - data: - - ["bufio", "", False, "NewReadWriter", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] - - ["bufio", "", False, "NewReader", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] - - ["bufio", "", False, "NewReaderSize", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] - - ["bufio", "", False, "NewScanner", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] - - ["bufio", "", False, "ScanBytes", "", "", "Argument[0]", "ReturnValue[1]", "taint", "manual"] - - ["bufio", "", False, "ScanLines", "", "", "Argument[0]", "ReturnValue[1]", "taint", "manual"] - - ["bufio", "", False, "ScanRunes", "", "", "Argument[0]", "ReturnValue[1]", "taint", "manual"] - - ["bufio", "", False, "ScanWords", "", "", "Argument[0]", "ReturnValue[1]", "taint", "manual"] - - ["bufio", "Reader", True, "Peek", "", "", "Argument[receiver]", "ReturnValue[0]", "taint", "manual"] - - ["bufio", "Reader", True, "ReadBytes", "", "", "Argument[receiver]", "ReturnValue[0]", "taint", "manual"] - - ["bufio", "Reader", True, "ReadLine", "", "", "Argument[receiver]", "ReturnValue[0]", "taint", "manual"] - - ["bufio", "Reader", True, "ReadSlice", "", "", "Argument[receiver]", "ReturnValue[0]", "taint", "manual"] - - ["bufio", "Reader", True, "ReadString", "", "", "Argument[receiver]", "ReturnValue[0]", "taint", "manual"] - - ["bufio", "Reader", True, "Reset", "", "", "Argument[0]", "Argument[receiver]", "taint", "manual"] - - ["bufio", "Scanner", True, "Bytes", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] - - ["bufio", "Scanner", True, "Text", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] - - ["bufio", "Writer", True, "Reset", "", "", "Argument[receiver]", "Argument[0]", "taint", "manual"] diff --git a/go/ql/lib/ext/builtin.model.json b/go/ql/lib/ext/builtin.model.json new file mode 100644 index 000000000000..fd73cc492843 --- /dev/null +++ b/go/ql/lib/ext/builtin.model.json @@ -0,0 +1,21 @@ +{ + "extensions": [ + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "summaryModel" + }, + "data": [ + ["", "", false, "append", "", "", "Argument[0]", "ReturnValue", "taint", "manual"], // special case for when arg[0] has core type []byte and second argument has core type bytestring and is followed by ... + ["", "", false, "append", "", "", "Argument[0].ArrayElement", "ReturnValue.ArrayElement", "value", "manual"], + ["", "", false, "append", "", "", "Argument[1]", "ReturnValue", "taint", "manual"], // special case for when arg[0] has core type []byte and second argument has core type bytestring and is followed by ... + ["", "", false, "append", "", "", "Argument[1].ArrayElement", "ReturnValue.ArrayElement", "value", "manual"], + ["", "", false, "copy", "", "", "Argument[1]", "Argument[0]", "taint", "manual"], // special case for when arg[0] has core type []byte and second argument has core type bytestring + ["", "", false, "copy", "", "", "Argument[1].ArrayElement", "Argument[0].ArrayElement", "value", "manual"], + ["", "", false, "max", "", "", "Argument[0..1000]", "ReturnValue", "value", "manual"], + ["", "", false, "min", "", "", "Argument[0..1000]", "ReturnValue", "value", "manual"], + ["", "", false, "new", "", "", "Argument[0]", "ReturnValue.Dereference", "value", "manual"] + ] + } + ] +} diff --git a/go/ql/lib/ext/builtin.model.yml b/go/ql/lib/ext/builtin.model.yml deleted file mode 100644 index 616e6bc23b01..000000000000 --- a/go/ql/lib/ext/builtin.model.yml +++ /dev/null @@ -1,14 +0,0 @@ -extensions: - - addsTo: - pack: codeql/go-all - extensible: summaryModel - data: - - ["", "", False, "append", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] # special case for when arg[0] has core type []byte and second argument has core type bytestring and is followed by ... - - ["", "", False, "append", "", "", "Argument[0].ArrayElement", "ReturnValue.ArrayElement", "value", "manual"] - - ["", "", False, "append", "", "", "Argument[1]", "ReturnValue", "taint", "manual"] # special case for when arg[0] has core type []byte and second argument has core type bytestring and is followed by ... - - ["", "", False, "append", "", "", "Argument[1].ArrayElement", "ReturnValue.ArrayElement", "value", "manual"] - - ["", "", False, "copy", "", "", "Argument[1]", "Argument[0]", "taint", "manual"] # special case for when arg[0] has core type []byte and second argument has core type bytestring - - ["", "", False, "copy", "", "", "Argument[1].ArrayElement", "Argument[0].ArrayElement", "value", "manual"] - - ["", "", False, "max", "", "", "Argument[0..1000]", "ReturnValue", "value", "manual"] - - ["", "", False, "min", "", "", "Argument[0..1000]", "ReturnValue", "value", "manual"] - - ["", "", False, "new", "", "", "Argument[0]", "ReturnValue.Dereference", "value", "manual"] diff --git a/go/ql/lib/ext/bytes.model.json b/go/ql/lib/ext/bytes.model.json new file mode 100644 index 000000000000..9ef5aaf724a2 --- /dev/null +++ b/go/ql/lib/ext/bytes.model.json @@ -0,0 +1,57 @@ +{ + "extensions": [ + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "summaryModel" + }, + "data": [ + ["bytes", "", false, "Clone", "", "", "Argument[0]", "ReturnValue", "taint", "manual"], + ["bytes", "", false, "Cut", "", "", "Argument[0]", "ReturnValue[0..1]", "taint", "manual"], + ["bytes", "", false, "CutLast", "", "", "Argument[0]", "ReturnValue[0..1]", "taint", "manual"], + ["bytes", "", false, "CutPrefix", "", "", "Argument[0]", "ReturnValue[0]", "taint", "manual"], + ["bytes", "", false, "CutSuffix", "", "", "Argument[0]", "ReturnValue[0]", "taint", "manual"], + ["bytes", "", false, "Fields", "", "", "Argument[0]", "ReturnValue", "taint", "manual"], + ["bytes", "", false, "FieldsFunc", "", "", "Argument[0]", "ReturnValue", "taint", "manual"], + ["bytes", "", false, "Join", "", "", "Argument[0..1]", "ReturnValue", "taint", "manual"], + ["bytes", "", false, "Map", "", "", "Argument[1]", "ReturnValue", "taint", "manual"], + ["bytes", "", false, "NewBuffer", "", "", "Argument[0]", "ReturnValue", "taint", "manual"], + ["bytes", "", false, "NewBufferString", "", "", "Argument[0]", "ReturnValue", "taint", "manual"], + ["bytes", "", false, "NewReader", "", "", "Argument[0]", "ReturnValue", "taint", "manual"], + ["bytes", "", false, "Repeat", "", "", "Argument[0]", "ReturnValue", "taint", "manual"], + ["bytes", "", false, "Replace", "", "", "Argument[0]", "ReturnValue", "taint", "manual"], + ["bytes", "", false, "Replace", "", "", "Argument[2]", "ReturnValue", "taint", "manual"], + ["bytes", "", false, "ReplaceAll", "", "", "Argument[0]", "ReturnValue", "taint", "manual"], + ["bytes", "", false, "ReplaceAll", "", "", "Argument[2]", "ReturnValue", "taint", "manual"], + ["bytes", "", false, "Runes", "", "", "Argument[0]", "ReturnValue", "taint", "manual"], + ["bytes", "", false, "Split", "", "", "Argument[0]", "ReturnValue", "taint", "manual"], + ["bytes", "", false, "SplitAfter", "", "", "Argument[0]", "ReturnValue", "taint", "manual"], + ["bytes", "", false, "SplitAfterN", "", "", "Argument[0]", "ReturnValue", "taint", "manual"], + ["bytes", "", false, "SplitN", "", "", "Argument[0]", "ReturnValue", "taint", "manual"], + ["bytes", "", false, "Title", "", "", "Argument[0]", "ReturnValue", "taint", "manual"], + ["bytes", "", false, "ToLower", "", "", "Argument[0]", "ReturnValue", "taint", "manual"], + ["bytes", "", false, "ToLowerSpecial", "", "", "Argument[1]", "ReturnValue", "taint", "manual"], + ["bytes", "", false, "ToTitle", "", "", "Argument[0]", "ReturnValue", "taint", "manual"], + ["bytes", "", false, "ToTitleSpecial", "", "", "Argument[1]", "ReturnValue", "taint", "manual"], + ["bytes", "", false, "ToUpper", "", "", "Argument[0]", "ReturnValue", "taint", "manual"], + ["bytes", "", false, "ToUpperSpecial", "", "", "Argument[1]", "ReturnValue", "taint", "manual"], + ["bytes", "", false, "ToValidUTF8", "", "", "Argument[0..1]", "ReturnValue", "taint", "manual"], + ["bytes", "", false, "Trim", "", "", "Argument[0]", "ReturnValue", "taint", "manual"], + ["bytes", "", false, "TrimFunc", "", "", "Argument[0]", "ReturnValue", "taint", "manual"], + ["bytes", "", false, "TrimLeft", "", "", "Argument[0]", "ReturnValue", "taint", "manual"], + ["bytes", "", false, "TrimLeftFunc", "", "", "Argument[0]", "ReturnValue", "taint", "manual"], + ["bytes", "", false, "TrimPrefix", "", "", "Argument[0]", "ReturnValue", "taint", "manual"], + ["bytes", "", false, "TrimRight", "", "", "Argument[0]", "ReturnValue", "taint", "manual"], + ["bytes", "", false, "TrimRightFunc", "", "", "Argument[0]", "ReturnValue", "taint", "manual"], + ["bytes", "", false, "TrimSpace", "", "", "Argument[0]", "ReturnValue", "taint", "manual"], + ["bytes", "", false, "TrimSuffix", "", "", "Argument[0]", "ReturnValue", "taint", "manual"], + ["bytes", "Buffer", true, "Bytes", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"], + ["bytes", "Buffer", true, "Next", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"], + ["bytes", "Buffer", true, "Peek", "", "", "Argument[receiver]", "ReturnValue[0]", "taint", "manual"], + ["bytes", "Buffer", true, "ReadBytes", "", "", "Argument[receiver]", "ReturnValue[0]", "taint", "manual"], + ["bytes", "Buffer", true, "ReadString", "", "", "Argument[receiver]", "ReturnValue[0]", "taint", "manual"], + ["bytes", "Reader", true, "Reset", "", "", "Argument[0]", "Argument[receiver]", "taint", "manual"] + ] + } + ] +} diff --git a/go/ql/lib/ext/bytes.model.yml b/go/ql/lib/ext/bytes.model.yml deleted file mode 100644 index 9f5ad37176a7..000000000000 --- a/go/ql/lib/ext/bytes.model.yml +++ /dev/null @@ -1,50 +0,0 @@ -extensions: - - addsTo: - pack: codeql/go-all - extensible: summaryModel - data: - - ["bytes", "", False, "Clone", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] - - ["bytes", "", False, "Cut", "", "", "Argument[0]", "ReturnValue[0..1]", "taint", "manual"] - - ["bytes", "", False, "CutLast", "", "", "Argument[0]", "ReturnValue[0..1]", "taint", "manual"] - - ["bytes", "", False, "CutPrefix", "", "", "Argument[0]", "ReturnValue[0]", "taint", "manual"] - - ["bytes", "", False, "CutSuffix", "", "", "Argument[0]", "ReturnValue[0]", "taint", "manual"] - - ["bytes", "", False, "Fields", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] - - ["bytes", "", False, "FieldsFunc", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] - - ["bytes", "", False, "Join", "", "", "Argument[0..1]", "ReturnValue", "taint", "manual"] - - ["bytes", "", False, "Map", "", "", "Argument[1]", "ReturnValue", "taint", "manual"] - - ["bytes", "", False, "NewBuffer", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] - - ["bytes", "", False, "NewBufferString", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] - - ["bytes", "", False, "NewReader", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] - - ["bytes", "", False, "Repeat", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] - - ["bytes", "", False, "Replace", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] - - ["bytes", "", False, "Replace", "", "", "Argument[2]", "ReturnValue", "taint", "manual"] - - ["bytes", "", False, "ReplaceAll", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] - - ["bytes", "", False, "ReplaceAll", "", "", "Argument[2]", "ReturnValue", "taint", "manual"] - - ["bytes", "", False, "Runes", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] - - ["bytes", "", False, "Split", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] - - ["bytes", "", False, "SplitAfter", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] - - ["bytes", "", False, "SplitAfterN", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] - - ["bytes", "", False, "SplitN", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] - - ["bytes", "", False, "Title", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] - - ["bytes", "", False, "ToLower", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] - - ["bytes", "", False, "ToLowerSpecial", "", "", "Argument[1]", "ReturnValue", "taint", "manual"] - - ["bytes", "", False, "ToTitle", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] - - ["bytes", "", False, "ToTitleSpecial", "", "", "Argument[1]", "ReturnValue", "taint", "manual"] - - ["bytes", "", False, "ToUpper", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] - - ["bytes", "", False, "ToUpperSpecial", "", "", "Argument[1]", "ReturnValue", "taint", "manual"] - - ["bytes", "", False, "ToValidUTF8", "", "", "Argument[0..1]", "ReturnValue", "taint", "manual"] - - ["bytes", "", False, "Trim", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] - - ["bytes", "", False, "TrimFunc", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] - - ["bytes", "", False, "TrimLeft", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] - - ["bytes", "", False, "TrimLeftFunc", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] - - ["bytes", "", False, "TrimPrefix", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] - - ["bytes", "", False, "TrimRight", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] - - ["bytes", "", False, "TrimRightFunc", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] - - ["bytes", "", False, "TrimSpace", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] - - ["bytes", "", False, "TrimSuffix", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] - - ["bytes", "Buffer", True, "Bytes", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] - - ["bytes", "Buffer", True, "Next", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] - - ["bytes", "Buffer", True, "Peek", "", "", "Argument[receiver]", "ReturnValue[0]", "taint", "manual"] - - ["bytes", "Buffer", True, "ReadBytes", "", "", "Argument[receiver]", "ReturnValue[0]", "taint", "manual"] - - ["bytes", "Buffer", True, "ReadString", "", "", "Argument[receiver]", "ReturnValue[0]", "taint", "manual"] - - ["bytes", "Reader", True, "Reset", "", "", "Argument[0]", "Argument[receiver]", "taint", "manual"] diff --git a/go/ql/lib/ext/clevergo.tech.clevergo.model.json b/go/ql/lib/ext/clevergo.tech.clevergo.model.json new file mode 100644 index 000000000000..ce1a4f6728d3 --- /dev/null +++ b/go/ql/lib/ext/clevergo.tech.clevergo.model.json @@ -0,0 +1,23 @@ +{ + "extensions": [ + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "packageGrouping" + }, + "data": [ + ["clever-go", "clevergo.tech/clevergo"], + ["clever-go", "github.com/clevergo/clevergo"] + ] + }, + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "sinkModel" + }, + "data": [ + ["group:clever-go", "Context", true, "Redirect", "", "", "Argument[1]", "url-redirection[receiver]", "manual"] + ] + } + ] +} diff --git a/go/ql/lib/ext/clevergo.tech.clevergo.model.yml b/go/ql/lib/ext/clevergo.tech.clevergo.model.yml deleted file mode 100644 index fdf8b082ca9c..000000000000 --- a/go/ql/lib/ext/clevergo.tech.clevergo.model.yml +++ /dev/null @@ -1,12 +0,0 @@ -extensions: - - addsTo: - pack: codeql/go-all - extensible: packageGrouping - data: - - ["clever-go", "clevergo.tech/clevergo"] - - ["clever-go", "github.com/clevergo/clevergo"] - - addsTo: - pack: codeql/go-all - extensible: sinkModel - data: - - ["group:clever-go", "Context", True, "Redirect", "", "", "Argument[1]", "url-redirection[receiver]", "manual"] diff --git a/go/ql/lib/ext/cloud.google.com.go.bigquery.model.json b/go/ql/lib/ext/cloud.google.com.go.bigquery.model.json new file mode 100644 index 000000000000..b7fe0b09907d --- /dev/null +++ b/go/ql/lib/ext/cloud.google.com.go.bigquery.model.json @@ -0,0 +1,13 @@ +{ + "extensions": [ + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "sinkModel" + }, + "data": [ + ["cloud.google.com/go/bigquery", "Client", true, "Query", "", "", "Argument[0]", "sql-injection", "manual"] + ] + } + ] +} diff --git a/go/ql/lib/ext/cloud.google.com.go.bigquery.model.yml b/go/ql/lib/ext/cloud.google.com.go.bigquery.model.yml deleted file mode 100644 index e2d51e9c6ae2..000000000000 --- a/go/ql/lib/ext/cloud.google.com.go.bigquery.model.yml +++ /dev/null @@ -1,6 +0,0 @@ -extensions: - - addsTo: - pack: codeql/go-all - extensible: sinkModel - data: - - ["cloud.google.com/go/bigquery", "Client", True, "Query", "", "", "Argument[0]", "sql-injection", "manual"] diff --git a/go/ql/lib/ext/compress.bzip2.model.json b/go/ql/lib/ext/compress.bzip2.model.json new file mode 100644 index 000000000000..e561ca73fd6f --- /dev/null +++ b/go/ql/lib/ext/compress.bzip2.model.json @@ -0,0 +1,13 @@ +{ + "extensions": [ + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "summaryModel" + }, + "data": [ + ["compress/bzip2", "", false, "NewReader", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] + ] + } + ] +} diff --git a/go/ql/lib/ext/compress.bzip2.model.yml b/go/ql/lib/ext/compress.bzip2.model.yml deleted file mode 100644 index 38719037de18..000000000000 --- a/go/ql/lib/ext/compress.bzip2.model.yml +++ /dev/null @@ -1,6 +0,0 @@ -extensions: - - addsTo: - pack: codeql/go-all - extensible: summaryModel - data: - - ["compress/bzip2", "", False, "NewReader", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] diff --git a/go/ql/lib/ext/compress.flate.model.json b/go/ql/lib/ext/compress.flate.model.json new file mode 100644 index 000000000000..6d4ac5f75e9a --- /dev/null +++ b/go/ql/lib/ext/compress.flate.model.json @@ -0,0 +1,16 @@ +{ + "extensions": [ + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "summaryModel" + }, + "data": [ + ["compress/flate", "", false, "NewReader", "", "", "Argument[0]", "ReturnValue", "taint", "manual"], + ["compress/flate", "", false, "NewReaderDict", "", "", "Argument[0]", "ReturnValue", "taint", "manual"], + ["compress/flate", "Resetter", true, "Reset", "", "", "Argument[0]", "Argument[receiver]", "taint", "manual"], + ["compress/flate", "Writer", true, "Reset", "", "", "Argument[receiver]", "Argument[0]", "taint", "manual"] + ] + } + ] +} diff --git a/go/ql/lib/ext/compress.flate.model.yml b/go/ql/lib/ext/compress.flate.model.yml deleted file mode 100644 index 5b36372c8c09..000000000000 --- a/go/ql/lib/ext/compress.flate.model.yml +++ /dev/null @@ -1,9 +0,0 @@ -extensions: - - addsTo: - pack: codeql/go-all - extensible: summaryModel - data: - - ["compress/flate", "", False, "NewReader", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] - - ["compress/flate", "", False, "NewReaderDict", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] - - ["compress/flate", "Resetter", True, "Reset", "", "", "Argument[0]", "Argument[receiver]", "taint", "manual"] - - ["compress/flate", "Writer", True, "Reset", "", "", "Argument[receiver]", "Argument[0]", "taint", "manual"] diff --git a/go/ql/lib/ext/compress.gzip.model.json b/go/ql/lib/ext/compress.gzip.model.json new file mode 100644 index 000000000000..82d66c5d0553 --- /dev/null +++ b/go/ql/lib/ext/compress.gzip.model.json @@ -0,0 +1,15 @@ +{ + "extensions": [ + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "summaryModel" + }, + "data": [ + ["compress/gzip", "", false, "NewReader", "", "", "Argument[0]", "ReturnValue[0]", "taint", "manual"], + ["compress/gzip", "Reader", true, "Reset", "", "", "Argument[0]", "Argument[receiver]", "taint", "manual"], + ["compress/gzip", "Writer", true, "Reset", "", "", "Argument[receiver]", "Argument[0]", "taint", "manual"] + ] + } + ] +} diff --git a/go/ql/lib/ext/compress.gzip.model.yml b/go/ql/lib/ext/compress.gzip.model.yml deleted file mode 100644 index d3da545b4483..000000000000 --- a/go/ql/lib/ext/compress.gzip.model.yml +++ /dev/null @@ -1,8 +0,0 @@ -extensions: - - addsTo: - pack: codeql/go-all - extensible: summaryModel - data: - - ["compress/gzip", "", False, "NewReader", "", "", "Argument[0]", "ReturnValue[0]", "taint", "manual"] - - ["compress/gzip", "Reader", True, "Reset", "", "", "Argument[0]", "Argument[receiver]", "taint", "manual"] - - ["compress/gzip", "Writer", True, "Reset", "", "", "Argument[receiver]", "Argument[0]", "taint", "manual"] diff --git a/go/ql/lib/ext/compress.lzw.model.json b/go/ql/lib/ext/compress.lzw.model.json new file mode 100644 index 000000000000..80e348fdc0ca --- /dev/null +++ b/go/ql/lib/ext/compress.lzw.model.json @@ -0,0 +1,13 @@ +{ + "extensions": [ + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "summaryModel" + }, + "data": [ + ["compress/lzw", "", false, "NewReader", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] + ] + } + ] +} diff --git a/go/ql/lib/ext/compress.lzw.model.yml b/go/ql/lib/ext/compress.lzw.model.yml deleted file mode 100644 index 5db30e14ec36..000000000000 --- a/go/ql/lib/ext/compress.lzw.model.yml +++ /dev/null @@ -1,6 +0,0 @@ -extensions: - - addsTo: - pack: codeql/go-all - extensible: summaryModel - data: - - ["compress/lzw", "", False, "NewReader", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] diff --git a/go/ql/lib/ext/compress.zlib.model.json b/go/ql/lib/ext/compress.zlib.model.json new file mode 100644 index 000000000000..799827e46ba2 --- /dev/null +++ b/go/ql/lib/ext/compress.zlib.model.json @@ -0,0 +1,16 @@ +{ + "extensions": [ + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "summaryModel" + }, + "data": [ + ["compress/zlib", "", false, "NewReader", "", "", "Argument[0]", "ReturnValue[0]", "taint", "manual"], + ["compress/zlib", "", false, "NewReaderDict", "", "", "Argument[0]", "ReturnValue[0]", "taint", "manual"], + ["compress/zlib", "Resetter", true, "Reset", "", "", "Argument[0]", "Argument[receiver]", "taint", "manual"], + ["compress/zlib", "Writer", true, "Reset", "", "", "Argument[receiver]", "Argument[0]", "taint", "manual"] + ] + } + ] +} diff --git a/go/ql/lib/ext/compress.zlib.model.yml b/go/ql/lib/ext/compress.zlib.model.yml deleted file mode 100644 index abd162c33923..000000000000 --- a/go/ql/lib/ext/compress.zlib.model.yml +++ /dev/null @@ -1,9 +0,0 @@ -extensions: - - addsTo: - pack: codeql/go-all - extensible: summaryModel - data: - - ["compress/zlib", "", False, "NewReader", "", "", "Argument[0]", "ReturnValue[0]", "taint", "manual"] - - ["compress/zlib", "", False, "NewReaderDict", "", "", "Argument[0]", "ReturnValue[0]", "taint", "manual"] - - ["compress/zlib", "Resetter", True, "Reset", "", "", "Argument[0]", "Argument[receiver]", "taint", "manual"] - - ["compress/zlib", "Writer", True, "Reset", "", "", "Argument[receiver]", "Argument[0]", "taint", "manual"] diff --git a/go/ql/lib/ext/container.heap.model.json b/go/ql/lib/ext/container.heap.model.json new file mode 100644 index 000000000000..f89e1e90773c --- /dev/null +++ b/go/ql/lib/ext/container.heap.model.json @@ -0,0 +1,17 @@ +{ + "extensions": [ + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "summaryModel" + }, + "data": [ + ["container/heap", "", false, "Pop", "", "", "Argument[0]", "ReturnValue", "taint", "manual"], + ["container/heap", "", false, "Push", "", "", "Argument[1]", "Argument[0]", "taint", "manual"], + ["container/heap", "", false, "Remove", "", "", "Argument[0]", "ReturnValue", "taint", "manual"], + ["container/heap", "Interface", true, "Pop", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"], + ["container/heap", "Interface", true, "Push", "", "", "Argument[0]", "Argument[receiver]", "taint", "manual"] + ] + } + ] +} diff --git a/go/ql/lib/ext/container.heap.model.yml b/go/ql/lib/ext/container.heap.model.yml deleted file mode 100644 index 57aabd12ea27..000000000000 --- a/go/ql/lib/ext/container.heap.model.yml +++ /dev/null @@ -1,10 +0,0 @@ -extensions: - - addsTo: - pack: codeql/go-all - extensible: summaryModel - data: - - ["container/heap", "", False, "Pop", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] - - ["container/heap", "", False, "Push", "", "", "Argument[1]", "Argument[0]", "taint", "manual"] - - ["container/heap", "", False, "Remove", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] - - ["container/heap", "Interface", True, "Pop", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] - - ["container/heap", "Interface", True, "Push", "", "", "Argument[0]", "Argument[receiver]", "taint", "manual"] diff --git a/go/ql/lib/ext/container.list.model.json b/go/ql/lib/ext/container.list.model.json new file mode 100644 index 000000000000..3fad8d6caff2 --- /dev/null +++ b/go/ql/lib/ext/container.list.model.json @@ -0,0 +1,32 @@ +{ + "extensions": [ + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "summaryModel" + }, + "data": [ + ["container/list", "Element", true, "Next", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"], + ["container/list", "Element", true, "Prev", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"], + ["container/list", "List", true, "Back", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"], + ["container/list", "List", true, "Front", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"], + ["container/list", "List", true, "Init", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"], + ["container/list", "List", true, "InsertAfter", "", "", "Argument[0]", "Argument[receiver]", "taint", "manual"], + ["container/list", "List", true, "InsertAfter", "", "", "Argument[0]", "ReturnValue", "taint", "manual"], + ["container/list", "List", true, "InsertBefore", "", "", "Argument[0]", "Argument[receiver]", "taint", "manual"], + ["container/list", "List", true, "InsertBefore", "", "", "Argument[0]", "ReturnValue", "taint", "manual"], + ["container/list", "List", true, "MoveAfter", "", "", "Argument[0]", "Argument[receiver]", "taint", "manual"], + ["container/list", "List", true, "MoveBefore", "", "", "Argument[0]", "Argument[receiver]", "taint", "manual"], + ["container/list", "List", true, "MoveToBack", "", "", "Argument[0]", "Argument[receiver]", "taint", "manual"], + ["container/list", "List", true, "MoveToFront", "", "", "Argument[0]", "Argument[receiver]", "taint", "manual"], + ["container/list", "List", true, "PushBack", "", "", "Argument[0]", "Argument[receiver]", "taint", "manual"], + ["container/list", "List", true, "PushBack", "", "", "Argument[0]", "ReturnValue", "taint", "manual"], + ["container/list", "List", true, "PushBackList", "", "", "Argument[0]", "Argument[receiver]", "taint", "manual"], + ["container/list", "List", true, "PushFront", "", "", "Argument[0]", "Argument[receiver]", "taint", "manual"], + ["container/list", "List", true, "PushFront", "", "", "Argument[0]", "ReturnValue", "taint", "manual"], + ["container/list", "List", true, "PushFrontList", "", "", "Argument[0]", "Argument[receiver]", "taint", "manual"], + ["container/list", "List", true, "Remove", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] + ] + } + ] +} diff --git a/go/ql/lib/ext/container.list.model.yml b/go/ql/lib/ext/container.list.model.yml deleted file mode 100644 index a02a1a366909..000000000000 --- a/go/ql/lib/ext/container.list.model.yml +++ /dev/null @@ -1,25 +0,0 @@ -extensions: - - addsTo: - pack: codeql/go-all - extensible: summaryModel - data: - - ["container/list", "Element", True, "Next", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] - - ["container/list", "Element", True, "Prev", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] - - ["container/list", "List", True, "Back", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] - - ["container/list", "List", True, "Front", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] - - ["container/list", "List", True, "Init", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] - - ["container/list", "List", True, "InsertAfter", "", "", "Argument[0]", "Argument[receiver]", "taint", "manual"] - - ["container/list", "List", True, "InsertAfter", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] - - ["container/list", "List", True, "InsertBefore", "", "", "Argument[0]", "Argument[receiver]", "taint", "manual"] - - ["container/list", "List", True, "InsertBefore", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] - - ["container/list", "List", True, "MoveAfter", "", "", "Argument[0]", "Argument[receiver]", "taint", "manual"] - - ["container/list", "List", True, "MoveBefore", "", "", "Argument[0]", "Argument[receiver]", "taint", "manual"] - - ["container/list", "List", True, "MoveToBack", "", "", "Argument[0]", "Argument[receiver]", "taint", "manual"] - - ["container/list", "List", True, "MoveToFront", "", "", "Argument[0]", "Argument[receiver]", "taint", "manual"] - - ["container/list", "List", True, "PushBack", "", "", "Argument[0]", "Argument[receiver]", "taint", "manual"] - - ["container/list", "List", True, "PushBack", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] - - ["container/list", "List", True, "PushBackList", "", "", "Argument[0]", "Argument[receiver]", "taint", "manual"] - - ["container/list", "List", True, "PushFront", "", "", "Argument[0]", "Argument[receiver]", "taint", "manual"] - - ["container/list", "List", True, "PushFront", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] - - ["container/list", "List", True, "PushFrontList", "", "", "Argument[0]", "Argument[receiver]", "taint", "manual"] - - ["container/list", "List", True, "Remove", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] diff --git a/go/ql/lib/ext/container.ring.model.json b/go/ql/lib/ext/container.ring.model.json new file mode 100644 index 000000000000..58cadb5e2272 --- /dev/null +++ b/go/ql/lib/ext/container.ring.model.json @@ -0,0 +1,17 @@ +{ + "extensions": [ + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "summaryModel" + }, + "data": [ + ["container/ring", "Ring", true, "Link", "", "", "Argument[0]", "ReturnValue", "taint", "manual"], + ["container/ring", "Ring", true, "Move", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"], + ["container/ring", "Ring", true, "Next", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"], + ["container/ring", "Ring", true, "Prev", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"], + ["container/ring", "Ring", true, "Unlink", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] + ] + } + ] +} diff --git a/go/ql/lib/ext/container.ring.model.yml b/go/ql/lib/ext/container.ring.model.yml deleted file mode 100644 index cddea0f9a6b9..000000000000 --- a/go/ql/lib/ext/container.ring.model.yml +++ /dev/null @@ -1,10 +0,0 @@ -extensions: - - addsTo: - pack: codeql/go-all - extensible: summaryModel - data: - - ["container/ring", "Ring", True, "Link", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] - - ["container/ring", "Ring", True, "Move", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] - - ["container/ring", "Ring", True, "Next", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] - - ["container/ring", "Ring", True, "Prev", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] - - ["container/ring", "Ring", True, "Unlink", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] diff --git a/go/ql/lib/ext/context.model.json b/go/ql/lib/ext/context.model.json new file mode 100644 index 000000000000..df19e09dc905 --- /dev/null +++ b/go/ql/lib/ext/context.model.json @@ -0,0 +1,17 @@ +{ + "extensions": [ + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "summaryModel" + }, + "data": [ + ["context", "", false, "WithCancel", "", "", "Argument[0]", "ReturnValue[0]", "taint", "manual"], + ["context", "", false, "WithDeadline", "", "", "Argument[0]", "ReturnValue[0]", "taint", "manual"], + ["context", "", false, "WithTimeout", "", "", "Argument[0]", "ReturnValue[0]", "taint", "manual"], + ["context", "", false, "WithValue", "", "", "Argument[0..2]", "ReturnValue", "taint", "manual"], + ["context", "Context", true, "Value", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] + ] + } + ] +} diff --git a/go/ql/lib/ext/context.model.yml b/go/ql/lib/ext/context.model.yml deleted file mode 100644 index b71adeb6b3c7..000000000000 --- a/go/ql/lib/ext/context.model.yml +++ /dev/null @@ -1,10 +0,0 @@ -extensions: - - addsTo: - pack: codeql/go-all - extensible: summaryModel - data: - - ["context", "", False, "WithCancel", "", "", "Argument[0]", "ReturnValue[0]", "taint", "manual"] - - ["context", "", False, "WithDeadline", "", "", "Argument[0]", "ReturnValue[0]", "taint", "manual"] - - ["context", "", False, "WithTimeout", "", "", "Argument[0]", "ReturnValue[0]", "taint", "manual"] - - ["context", "", False, "WithValue", "", "", "Argument[0..2]", "ReturnValue", "taint", "manual"] - - ["context", "Context", True, "Value", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] diff --git a/go/ql/lib/ext/crypto.cipher.model.json b/go/ql/lib/ext/crypto.cipher.model.json new file mode 100644 index 000000000000..6f5f621b7a97 --- /dev/null +++ b/go/ql/lib/ext/crypto.cipher.model.json @@ -0,0 +1,15 @@ +{ + "extensions": [ + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "summaryModel" + }, + "data": [ + ["crypto/cipher", "AEAD", true, "Open", "", "", "Argument[2]", "Argument[0]", "taint", "manual"], + ["crypto/cipher", "AEAD", true, "Open", "", "", "Argument[2]", "ReturnValue[0]", "taint", "manual"], + ["crypto/cipher", "Block", true, "Decrypt", "", "", "Argument[1]", "Argument[0]", "taint", "manual"] + ] + } + ] +} diff --git a/go/ql/lib/ext/crypto.cipher.model.yml b/go/ql/lib/ext/crypto.cipher.model.yml deleted file mode 100644 index 081dd447c027..000000000000 --- a/go/ql/lib/ext/crypto.cipher.model.yml +++ /dev/null @@ -1,8 +0,0 @@ -extensions: - - addsTo: - pack: codeql/go-all - extensible: summaryModel - data: - - ["crypto/cipher", "AEAD", True, "Open", "", "", "Argument[2]", "Argument[0]", "taint", "manual"] - - ["crypto/cipher", "AEAD", True, "Open", "", "", "Argument[2]", "ReturnValue[0]", "taint", "manual"] - - ["crypto/cipher", "Block", True, "Decrypt", "", "", "Argument[1]", "Argument[0]", "taint", "manual"] diff --git a/go/ql/lib/ext/crypto.model.json b/go/ql/lib/ext/crypto.model.json new file mode 100644 index 000000000000..daf74fd5d5ef --- /dev/null +++ b/go/ql/lib/ext/crypto.model.json @@ -0,0 +1,13 @@ +{ + "extensions": [ + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "summaryModel" + }, + "data": [ + ["crypto", "Decrypter", true, "Decrypt", "", "", "Argument[1]", "ReturnValue[0]", "taint", "manual"] + ] + } + ] +} diff --git a/go/ql/lib/ext/crypto.model.yml b/go/ql/lib/ext/crypto.model.yml deleted file mode 100644 index 353c965df2f0..000000000000 --- a/go/ql/lib/ext/crypto.model.yml +++ /dev/null @@ -1,6 +0,0 @@ -extensions: - - addsTo: - pack: codeql/go-all - extensible: summaryModel - data: - - ["crypto", "Decrypter", True, "Decrypt", "", "", "Argument[1]", "ReturnValue[0]", "taint", "manual"] diff --git a/go/ql/lib/ext/crypto.rsa.model.json b/go/ql/lib/ext/crypto.rsa.model.json new file mode 100644 index 000000000000..74c829d4e0f2 --- /dev/null +++ b/go/ql/lib/ext/crypto.rsa.model.json @@ -0,0 +1,14 @@ +{ + "extensions": [ + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "summaryModel" + }, + "data": [ + ["crypto/rsa", "", false, "DecryptOAEP", "", "", "Argument[3]", "ReturnValue[0]", "taint", "manual"], + ["crypto/rsa", "", false, "DecryptPKCS1v15", "", "", "Argument[2]", "ReturnValue[0]", "taint", "manual"] + ] + } + ] +} diff --git a/go/ql/lib/ext/crypto.rsa.model.yml b/go/ql/lib/ext/crypto.rsa.model.yml deleted file mode 100644 index 851251973a62..000000000000 --- a/go/ql/lib/ext/crypto.rsa.model.yml +++ /dev/null @@ -1,7 +0,0 @@ -extensions: - - addsTo: - pack: codeql/go-all - extensible: summaryModel - data: - - ["crypto/rsa", "", False, "DecryptOAEP", "", "", "Argument[3]", "ReturnValue[0]", "taint", "manual"] - - ["crypto/rsa", "", False, "DecryptPKCS1v15", "", "", "Argument[2]", "ReturnValue[0]", "taint", "manual"] diff --git a/go/ql/lib/ext/crypto.tls.model.json b/go/ql/lib/ext/crypto.tls.model.json new file mode 100644 index 000000000000..f289d1741465 --- /dev/null +++ b/go/ql/lib/ext/crypto.tls.model.json @@ -0,0 +1,15 @@ +{ + "extensions": [ + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "summaryModel" + }, + "data": [ + ["crypto/tls", "", false, "Client", "", "", "Argument[0]", "ReturnValue", "taint", "manual"], + ["crypto/tls", "", false, "NewListener", "", "", "Argument[0]", "ReturnValue", "taint", "manual"], + ["crypto/tls", "", false, "Server", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] + ] + } + ] +} diff --git a/go/ql/lib/ext/crypto.tls.model.yml b/go/ql/lib/ext/crypto.tls.model.yml deleted file mode 100644 index ecb4c8859946..000000000000 --- a/go/ql/lib/ext/crypto.tls.model.yml +++ /dev/null @@ -1,8 +0,0 @@ -extensions: - - addsTo: - pack: codeql/go-all - extensible: summaryModel - data: - - ["crypto/tls", "", False, "Client", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] - - ["crypto/tls", "", False, "NewListener", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] - - ["crypto/tls", "", False, "Server", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] diff --git a/go/ql/lib/ext/crypto.x509.model.json b/go/ql/lib/ext/crypto.x509.model.json new file mode 100644 index 000000000000..b9236a77983e --- /dev/null +++ b/go/ql/lib/ext/crypto.x509.model.json @@ -0,0 +1,13 @@ +{ + "extensions": [ + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "summaryModel" + }, + "data": [ + ["crypto/x509", "", false, "DecryptPEMBlock", "", "", "Argument[0]", "ReturnValue[0]", "taint", "manual"] + ] + } + ] +} diff --git a/go/ql/lib/ext/crypto.x509.model.yml b/go/ql/lib/ext/crypto.x509.model.yml deleted file mode 100644 index dd16777a75b7..000000000000 --- a/go/ql/lib/ext/crypto.x509.model.yml +++ /dev/null @@ -1,6 +0,0 @@ -extensions: - - addsTo: - pack: codeql/go-all - extensible: summaryModel - data: - - ["crypto/x509", "", False, "DecryptPEMBlock", "", "", "Argument[0]", "ReturnValue[0]", "taint", "manual"] diff --git a/go/ql/lib/ext/database.sql.driver.model.json b/go/ql/lib/ext/database.sql.driver.model.json new file mode 100644 index 000000000000..b2c06f2f93ad --- /dev/null +++ b/go/ql/lib/ext/database.sql.driver.model.json @@ -0,0 +1,44 @@ +{ + "extensions": [ + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "sourceModel" + }, + "data": [ + ["database/sql/driver", "Queryer", true, "Query", "", "", "ReturnValue[0]", "database", "manual"], + ["database/sql/driver", "QueryerContext", true, "QueryContext", "", "", "ReturnValue[0]", "database", "manual"], + ["database/sql/driver", "Stmt", true, "Query", "", "", "ReturnValue[0]", "database", "manual"], + ["database/sql/driver", "StmtQueryContext", true, "QueryContext", "", "", "ReturnValue[0]", "database", "manual"] + ] + }, + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "sinkModel" + }, + "data": [ + ["database/sql/driver", "Execer", true, "Exec", "", "", "Argument[0]", "sql-injection", "manual"], + ["database/sql/driver", "ExecerContext", true, "ExecContext", "", "", "Argument[1]", "sql-injection", "manual"], + ["database/sql/driver", "Conn", true, "Prepare", "", "", "Argument[0]", "sql-injection", "manual"], + ["database/sql/driver", "ConnPrepareContext", true, "PrepareContext", "", "", "Argument[1]", "sql-injection", "manual"], + ["database/sql/driver", "Queryer", true, "Query", "", "", "Argument[0]", "sql-injection", "manual"], + ["database/sql/driver", "QueryerContext", true, "QueryContext", "", "", "Argument[1]", "sql-injection", "manual"] + ] + }, + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "summaryModel" + }, + "data": [ + ["database/sql/driver", "Conn", true, "Prepare", "", "", "Argument[0]", "ReturnValue[0]", "taint", "manual"], + ["database/sql/driver", "ConnPrepareContext", true, "PrepareContext", "", "", "Argument[1]", "ReturnValue[0]", "taint", "manual"], + ["database/sql/driver", "Rows", true, "Next", "", "", "Argument[receiver]", "Argument[0]", "taint", "manual"], + ["database/sql/driver", "RowsColumnScanner", true, "ScanColumn", "", "", "Argument[receiver]", "Argument[2]", "taint", "manual"], + ["database/sql/driver", "ValueConverter", true, "ConvertValue", "", "", "Argument[0]", "ReturnValue[0]", "taint", "manual"], + ["database/sql/driver", "Valuer", true, "Value", "", "", "Argument[receiver]", "ReturnValue[0]", "taint", "manual"] + ] + } + ] +} diff --git a/go/ql/lib/ext/database.sql.driver.model.yml b/go/ql/lib/ext/database.sql.driver.model.yml deleted file mode 100644 index 2c5770e26194..000000000000 --- a/go/ql/lib/ext/database.sql.driver.model.yml +++ /dev/null @@ -1,29 +0,0 @@ -extensions: - - addsTo: - pack: codeql/go-all - extensible: sourceModel - data: - - ["database/sql/driver", "Queryer", True, "Query", "", "", "ReturnValue[0]", "database", "manual"] - - ["database/sql/driver", "QueryerContext", True, "QueryContext", "", "", "ReturnValue[0]", "database", "manual"] - - ["database/sql/driver", "Stmt", True, "Query", "", "", "ReturnValue[0]", "database", "manual"] - - ["database/sql/driver", "StmtQueryContext", True, "QueryContext", "", "", "ReturnValue[0]", "database", "manual"] - - addsTo: - pack: codeql/go-all - extensible: sinkModel - data: - - ["database/sql/driver", "Execer", True, "Exec", "", "", "Argument[0]", "sql-injection", "manual"] - - ["database/sql/driver", "ExecerContext", True, "ExecContext", "", "", "Argument[1]", "sql-injection", "manual"] - - ["database/sql/driver", "Conn", True, "Prepare", "", "", "Argument[0]", "sql-injection", "manual"] - - ["database/sql/driver", "ConnPrepareContext", True, "PrepareContext", "", "", "Argument[1]", "sql-injection", "manual"] - - ["database/sql/driver", "Queryer", True, "Query", "", "", "Argument[0]", "sql-injection", "manual"] - - ["database/sql/driver", "QueryerContext", True, "QueryContext", "", "", "Argument[1]", "sql-injection", "manual"] - - addsTo: - pack: codeql/go-all - extensible: summaryModel - data: - - ["database/sql/driver", "Conn", True, "Prepare", "", "", "Argument[0]", "ReturnValue[0]", "taint", "manual"] - - ["database/sql/driver", "ConnPrepareContext", True, "PrepareContext", "", "", "Argument[1]", "ReturnValue[0]", "taint", "manual"] - - ["database/sql/driver", "Rows", True, "Next", "", "", "Argument[receiver]", "Argument[0]", "taint", "manual"] - - ["database/sql/driver", "RowsColumnScanner", True, "ScanColumn", "", "", "Argument[receiver]", "Argument[2]", "taint", "manual"] - - ["database/sql/driver", "ValueConverter", True, "ConvertValue", "", "", "Argument[0]", "ReturnValue[0]", "taint", "manual"] - - ["database/sql/driver", "Valuer", True, "Value", "", "", "Argument[receiver]", "ReturnValue[0]", "taint", "manual"] diff --git a/go/ql/lib/ext/database.sql.model.json b/go/ql/lib/ext/database.sql.model.json new file mode 100644 index 000000000000..dd9564d65d3b --- /dev/null +++ b/go/ql/lib/ext/database.sql.model.json @@ -0,0 +1,74 @@ +{ + "extensions": [ + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "sourceModel" + }, + "data": [ + ["database/sql", "Conn", true, "QueryContext", "", "", "ReturnValue[0]", "database", "manual"], + ["database/sql", "Conn", true, "QueryRowContext", "", "", "ReturnValue", "database", "manual"], + ["database/sql", "DB", true, "Query", "", "", "ReturnValue[0]", "database", "manual"], + ["database/sql", "DB", true, "QueryContext", "", "", "ReturnValue[0]", "database", "manual"], + ["database/sql", "DB", true, "QueryRow", "", "", "ReturnValue", "database", "manual"], + ["database/sql", "DB", true, "QueryRowContext", "", "", "ReturnValue", "database", "manual"], + ["database/sql", "Stmt", true, "Query", "", "", "ReturnValue[0]", "database", "manual"], + ["database/sql", "Stmt", true, "QueryContext", "", "", "ReturnValue[0]", "database", "manual"], + ["database/sql", "Stmt", true, "QueryRow", "", "", "ReturnValue", "database", "manual"], + ["database/sql", "Stmt", true, "QueryRowContext", "", "", "ReturnValue", "database", "manual"], + ["database/sql", "Tx", true, "Query", "", "", "ReturnValue[0]", "database", "manual"], + ["database/sql", "Tx", true, "QueryContext", "", "", "ReturnValue[0]", "database", "manual"], + ["database/sql", "Tx", true, "QueryRow", "", "", "ReturnValue", "database", "manual"], + ["database/sql", "Tx", true, "QueryRowContext", "", "", "ReturnValue", "database", "manual"] + ] + }, + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "sinkModel" + }, + "data": [ + ["database/sql", "Conn", true, "Exec", "", "", "Argument[0]", "sql-injection", "manual"], + ["database/sql", "Conn", true, "ExecContext", "", "", "Argument[1]", "sql-injection", "manual"], + ["database/sql", "Conn", true, "Prepare", "", "", "Argument[0]", "sql-injection", "manual"], + ["database/sql", "Conn", true, "PrepareContext", "", "", "Argument[1]", "sql-injection", "manual"], + ["database/sql", "Conn", true, "Query", "", "", "Argument[0]", "sql-injection", "manual"], + ["database/sql", "Conn", true, "QueryContext", "", "", "Argument[1]", "sql-injection", "manual"], + ["database/sql", "Conn", true, "QueryRow", "", "", "Argument[0]", "sql-injection", "manual"], + ["database/sql", "Conn", true, "QueryRowContext", "", "", "Argument[1]", "sql-injection", "manual"], + ["database/sql", "DB", true, "Exec", "", "", "Argument[0]", "sql-injection", "manual"], + ["database/sql", "DB", true, "ExecContext", "", "", "Argument[1]", "sql-injection", "manual"], + ["database/sql", "DB", true, "Prepare", "", "", "Argument[0]", "sql-injection", "manual"], + ["database/sql", "DB", true, "PrepareContext", "", "", "Argument[1]", "sql-injection", "manual"], + ["database/sql", "DB", true, "Query", "", "", "Argument[0]", "sql-injection", "manual"], + ["database/sql", "DB", true, "QueryContext", "", "", "Argument[1]", "sql-injection", "manual"], + ["database/sql", "DB", true, "QueryRow", "", "", "Argument[0]", "sql-injection", "manual"], + ["database/sql", "DB", true, "QueryRowContext", "", "", "Argument[1]", "sql-injection", "manual"], + ["database/sql", "Tx", true, "Exec", "", "", "Argument[0]", "sql-injection", "manual"], + ["database/sql", "Tx", true, "ExecContext", "", "", "Argument[1]", "sql-injection", "manual"], + ["database/sql", "Tx", true, "Prepare", "", "", "Argument[0]", "sql-injection", "manual"], + ["database/sql", "Tx", true, "PrepareContext", "", "", "Argument[1]", "sql-injection", "manual"], + ["database/sql", "Tx", true, "Query", "", "", "Argument[0]", "sql-injection", "manual"], + ["database/sql", "Tx", true, "QueryContext", "", "", "Argument[1]", "sql-injection", "manual"], + ["database/sql", "Tx", true, "QueryRow", "", "", "Argument[0]", "sql-injection", "manual"], + ["database/sql", "Tx", true, "QueryRowContext", "", "", "Argument[1]", "sql-injection", "manual"] + ] + }, + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "summaryModel" + }, + "data": [ + ["database/sql", "", false, "ConvertAssign", "", "", "Argument[2]", "Argument[1]", "taint", "manual"], + ["database/sql", "", false, "Named", "", "", "Argument[0..1]", "ReturnValue", "taint", "manual"], + ["database/sql", "Conn", true, "PrepareContext", "", "", "Argument[1]", "ReturnValue[0]", "taint", "manual"], + ["database/sql", "DB", true, "Prepare", "", "", "Argument[0]", "ReturnValue[0]", "taint", "manual"], + ["database/sql", "DB", true, "PrepareContext", "", "", "Argument[1]", "ReturnValue[0]", "taint", "manual"], + ["database/sql", "Scanner", true, "Scan", "", "", "Argument[0]", "Argument[receiver]", "taint", "manual"], + ["database/sql", "Tx", true, "Prepare", "", "", "Argument[0]", "ReturnValue[0]", "taint", "manual"], + ["database/sql", "Tx", true, "PrepareContext", "", "", "Argument[1]", "ReturnValue[0]", "taint", "manual"] + ] + } + ] +} diff --git a/go/ql/lib/ext/database.sql.model.yml b/go/ql/lib/ext/database.sql.model.yml deleted file mode 100644 index 3f37c2a6eab4..000000000000 --- a/go/ql/lib/ext/database.sql.model.yml +++ /dev/null @@ -1,59 +0,0 @@ -extensions: - - addsTo: - pack: codeql/go-all - extensible: sourceModel - data: - - ["database/sql", "Conn", True, "QueryContext", "", "", "ReturnValue[0]", "database", "manual"] - - ["database/sql", "Conn", True, "QueryRowContext", "", "", "ReturnValue", "database", "manual"] - - ["database/sql", "DB", True, "Query", "", "", "ReturnValue[0]", "database", "manual"] - - ["database/sql", "DB", True, "QueryContext", "", "", "ReturnValue[0]", "database", "manual"] - - ["database/sql", "DB", True, "QueryRow", "", "", "ReturnValue", "database", "manual"] - - ["database/sql", "DB", True, "QueryRowContext", "", "", "ReturnValue", "database", "manual"] - - ["database/sql", "Stmt", True, "Query", "", "", "ReturnValue[0]", "database", "manual"] - - ["database/sql", "Stmt", True, "QueryContext", "", "", "ReturnValue[0]", "database", "manual"] - - ["database/sql", "Stmt", True, "QueryRow", "", "", "ReturnValue", "database", "manual"] - - ["database/sql", "Stmt", True, "QueryRowContext", "", "", "ReturnValue", "database", "manual"] - - ["database/sql", "Tx", True, "Query", "", "", "ReturnValue[0]", "database", "manual"] - - ["database/sql", "Tx", True, "QueryContext", "", "", "ReturnValue[0]", "database", "manual"] - - ["database/sql", "Tx", True, "QueryRow", "", "", "ReturnValue", "database", "manual"] - - ["database/sql", "Tx", True, "QueryRowContext", "", "", "ReturnValue", "database", "manual"] - - addsTo: - pack: codeql/go-all - extensible: sinkModel - data: - - ["database/sql", "Conn", True, "Exec", "", "", "Argument[0]", "sql-injection", "manual"] - - ["database/sql", "Conn", True, "ExecContext", "", "", "Argument[1]", "sql-injection", "manual"] - - ["database/sql", "Conn", True, "Prepare", "", "", "Argument[0]", "sql-injection", "manual"] - - ["database/sql", "Conn", True, "PrepareContext", "", "", "Argument[1]", "sql-injection", "manual"] - - ["database/sql", "Conn", True, "Query", "", "", "Argument[0]", "sql-injection", "manual"] - - ["database/sql", "Conn", True, "QueryContext", "", "", "Argument[1]", "sql-injection", "manual"] - - ["database/sql", "Conn", True, "QueryRow", "", "", "Argument[0]", "sql-injection", "manual"] - - ["database/sql", "Conn", True, "QueryRowContext", "", "", "Argument[1]", "sql-injection", "manual"] - - ["database/sql", "DB", True, "Exec", "", "", "Argument[0]", "sql-injection", "manual"] - - ["database/sql", "DB", True, "ExecContext", "", "", "Argument[1]", "sql-injection", "manual"] - - ["database/sql", "DB", True, "Prepare", "", "", "Argument[0]", "sql-injection", "manual"] - - ["database/sql", "DB", True, "PrepareContext", "", "", "Argument[1]", "sql-injection", "manual"] - - ["database/sql", "DB", True, "Query", "", "", "Argument[0]", "sql-injection", "manual"] - - ["database/sql", "DB", True, "QueryContext", "", "", "Argument[1]", "sql-injection", "manual"] - - ["database/sql", "DB", True, "QueryRow", "", "", "Argument[0]", "sql-injection", "manual"] - - ["database/sql", "DB", True, "QueryRowContext", "", "", "Argument[1]", "sql-injection", "manual"] - - ["database/sql", "Tx", True, "Exec", "", "", "Argument[0]", "sql-injection", "manual"] - - ["database/sql", "Tx", True, "ExecContext", "", "", "Argument[1]", "sql-injection", "manual"] - - ["database/sql", "Tx", True, "Prepare", "", "", "Argument[0]", "sql-injection", "manual"] - - ["database/sql", "Tx", True, "PrepareContext", "", "", "Argument[1]", "sql-injection", "manual"] - - ["database/sql", "Tx", True, "Query", "", "", "Argument[0]", "sql-injection", "manual"] - - ["database/sql", "Tx", True, "QueryContext", "", "", "Argument[1]", "sql-injection", "manual"] - - ["database/sql", "Tx", True, "QueryRow", "", "", "Argument[0]", "sql-injection", "manual"] - - ["database/sql", "Tx", True, "QueryRowContext", "", "", "Argument[1]", "sql-injection", "manual"] - - addsTo: - pack: codeql/go-all - extensible: summaryModel - data: - - ["database/sql", "", False, "ConvertAssign", "", "", "Argument[2]", "Argument[1]", "taint", "manual"] - - ["database/sql", "", False, "Named", "", "", "Argument[0..1]", "ReturnValue", "taint", "manual"] - - ["database/sql", "Conn", True, "PrepareContext", "", "", "Argument[1]", "ReturnValue[0]", "taint", "manual"] - - ["database/sql", "DB", True, "Prepare", "", "", "Argument[0]", "ReturnValue[0]", "taint", "manual"] - - ["database/sql", "DB", True, "PrepareContext", "", "", "Argument[1]", "ReturnValue[0]", "taint", "manual"] - - ["database/sql", "Scanner", True, "Scan", "", "", "Argument[0]", "Argument[receiver]", "taint", "manual"] - - ["database/sql", "Tx", True, "Prepare", "", "", "Argument[0]", "ReturnValue[0]", "taint", "manual"] - - ["database/sql", "Tx", True, "PrepareContext", "", "", "Argument[1]", "ReturnValue[0]", "taint", "manual"] diff --git a/go/ql/lib/ext/empty.model.json b/go/ql/lib/ext/empty.model.json new file mode 100644 index 000000000000..af233bdb8b75 --- /dev/null +++ b/go/ql/lib/ext/empty.model.json @@ -0,0 +1,55 @@ +{ + "extensions": [ + // Make sure that the extensible model predicates have at least one definition + // to avoid errors about undefined extensionals. + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "sourceModel" + }, + "data": [] + }, + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "sinkModel" + }, + "data": [] + }, + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "barrierModel" + }, + "data": [] + }, + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "barrierGuardModel" + }, + "data": [] + }, + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "summaryModel" + }, + "data": [] + }, + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "neutralModel" + }, + "data": [] + }, + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "packageGrouping" + }, + "data": [] + } + ] +} diff --git a/go/ql/lib/ext/empty.model.yml b/go/ql/lib/ext/empty.model.yml deleted file mode 100644 index 1709a6098eb5..000000000000 --- a/go/ql/lib/ext/empty.model.yml +++ /dev/null @@ -1,31 +0,0 @@ -extensions: - # Make sure that the extensible model predicates have at least one definition - # to avoid errors about undefined extensionals. - - addsTo: - pack: codeql/go-all - extensible: sourceModel - data: [] - - addsTo: - pack: codeql/go-all - extensible: sinkModel - data: [] - - addsTo: - pack: codeql/go-all - extensible: barrierModel - data: [] - - addsTo: - pack: codeql/go-all - extensible: barrierGuardModel - data: [] - - addsTo: - pack: codeql/go-all - extensible: summaryModel - data: [] - - addsTo: - pack: codeql/go-all - extensible: neutralModel - data: [] - - addsTo: - pack: codeql/go-all - extensible: packageGrouping - data: [] diff --git a/go/ql/lib/ext/encoding.ascii85.model.json b/go/ql/lib/ext/encoding.ascii85.model.json new file mode 100644 index 000000000000..f3f4688679b3 --- /dev/null +++ b/go/ql/lib/ext/encoding.ascii85.model.json @@ -0,0 +1,14 @@ +{ + "extensions": [ + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "summaryModel" + }, + "data": [ + ["encoding/ascii85", "", false, "Decode", "", "", "Argument[1]", "Argument[0]", "taint", "manual"], + ["encoding/ascii85", "", false, "NewDecoder", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] + ] + } + ] +} diff --git a/go/ql/lib/ext/encoding.ascii85.model.yml b/go/ql/lib/ext/encoding.ascii85.model.yml deleted file mode 100644 index 51c15078176b..000000000000 --- a/go/ql/lib/ext/encoding.ascii85.model.yml +++ /dev/null @@ -1,7 +0,0 @@ -extensions: - - addsTo: - pack: codeql/go-all - extensible: summaryModel - data: - - ["encoding/ascii85", "", False, "Decode", "", "", "Argument[1]", "Argument[0]", "taint", "manual"] - - ["encoding/ascii85", "", False, "NewDecoder", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] diff --git a/go/ql/lib/ext/encoding.asn1.model.json b/go/ql/lib/ext/encoding.asn1.model.json new file mode 100644 index 000000000000..9f26935516ae --- /dev/null +++ b/go/ql/lib/ext/encoding.asn1.model.json @@ -0,0 +1,20 @@ +{ + "extensions": [ + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "summaryModel" + }, + "data": [ + ["encoding/asn1", "", false, "Marshal", "", "", "Argument[0]", "ReturnValue[0]", "taint", "manual"], + ["encoding/asn1", "", false, "MarshalWithParams", "", "", "Argument[0..1]", "ReturnValue[0]", "taint", "manual"], + ["encoding/asn1", "", false, "Unmarshal", "", "", "Argument[0]", "Argument[1]", "taint", "manual"], + ["encoding/asn1", "", false, "Unmarshal", "", "", "Argument[0]", "ReturnValue[0]", "taint", "manual"], + ["encoding/asn1", "", false, "UnmarshalWithParams", "", "", "Argument[0]", "Argument[1]", "taint", "manual"], + ["encoding/asn1", "", false, "UnmarshalWithParams", "", "", "Argument[0]", "ReturnValue[0]", "taint", "manual"], + ["encoding/asn1", "", false, "UnmarshalWithParams", "", "", "Argument[2]", "Argument[1]", "taint", "manual"], + ["encoding/asn1", "", false, "UnmarshalWithParams", "", "", "Argument[2]", "ReturnValue[0]", "taint", "manual"] + ] + } + ] +} diff --git a/go/ql/lib/ext/encoding.asn1.model.yml b/go/ql/lib/ext/encoding.asn1.model.yml deleted file mode 100644 index e0c08cc216ef..000000000000 --- a/go/ql/lib/ext/encoding.asn1.model.yml +++ /dev/null @@ -1,13 +0,0 @@ -extensions: - - addsTo: - pack: codeql/go-all - extensible: summaryModel - data: - - ["encoding/asn1", "", False, "Marshal", "", "", "Argument[0]", "ReturnValue[0]", "taint", "manual"] - - ["encoding/asn1", "", False, "MarshalWithParams", "", "", "Argument[0..1]", "ReturnValue[0]", "taint", "manual"] - - ["encoding/asn1", "", False, "Unmarshal", "", "", "Argument[0]", "Argument[1]", "taint", "manual"] - - ["encoding/asn1", "", False, "Unmarshal", "", "", "Argument[0]", "ReturnValue[0]", "taint", "manual"] - - ["encoding/asn1", "", False, "UnmarshalWithParams", "", "", "Argument[0]", "Argument[1]", "taint", "manual"] - - ["encoding/asn1", "", False, "UnmarshalWithParams", "", "", "Argument[0]", "ReturnValue[0]", "taint", "manual"] - - ["encoding/asn1", "", False, "UnmarshalWithParams", "", "", "Argument[2]", "Argument[1]", "taint", "manual"] - - ["encoding/asn1", "", False, "UnmarshalWithParams", "", "", "Argument[2]", "ReturnValue[0]", "taint", "manual"] diff --git a/go/ql/lib/ext/encoding.base32.model.json b/go/ql/lib/ext/encoding.base32.model.json new file mode 100644 index 000000000000..453da6c174e4 --- /dev/null +++ b/go/ql/lib/ext/encoding.base32.model.json @@ -0,0 +1,15 @@ +{ + "extensions": [ + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "summaryModel" + }, + "data": [ + ["encoding/base32", "", false, "NewDecoder", "", "", "Argument[1]", "ReturnValue", "taint", "manual"], + ["encoding/base32", "Encoding", true, "Decode", "", "", "Argument[1]", "Argument[0]", "taint", "manual"], + ["encoding/base32", "Encoding", true, "DecodeString", "", "", "Argument[0]", "ReturnValue[0]", "taint", "manual"] + ] + } + ] +} diff --git a/go/ql/lib/ext/encoding.base32.model.yml b/go/ql/lib/ext/encoding.base32.model.yml deleted file mode 100644 index 5cabdb05a414..000000000000 --- a/go/ql/lib/ext/encoding.base32.model.yml +++ /dev/null @@ -1,8 +0,0 @@ -extensions: - - addsTo: - pack: codeql/go-all - extensible: summaryModel - data: - - ["encoding/base32", "", False, "NewDecoder", "", "", "Argument[1]", "ReturnValue", "taint", "manual"] - - ["encoding/base32", "Encoding", True, "Decode", "", "", "Argument[1]", "Argument[0]", "taint", "manual"] - - ["encoding/base32", "Encoding", True, "DecodeString", "", "", "Argument[0]", "ReturnValue[0]", "taint", "manual"] diff --git a/go/ql/lib/ext/encoding.base64.model.json b/go/ql/lib/ext/encoding.base64.model.json new file mode 100644 index 000000000000..60f9d5993490 --- /dev/null +++ b/go/ql/lib/ext/encoding.base64.model.json @@ -0,0 +1,15 @@ +{ + "extensions": [ + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "summaryModel" + }, + "data": [ + ["encoding/base64", "", false, "NewDecoder", "", "", "Argument[1]", "ReturnValue", "taint", "manual"], + ["encoding/base64", "Encoding", true, "Decode", "", "", "Argument[1]", "Argument[0]", "taint", "manual"], + ["encoding/base64", "Encoding", true, "DecodeString", "", "", "Argument[0]", "ReturnValue[0]", "taint", "manual"] + ] + } + ] +} diff --git a/go/ql/lib/ext/encoding.base64.model.yml b/go/ql/lib/ext/encoding.base64.model.yml deleted file mode 100644 index 1e199c5f4692..000000000000 --- a/go/ql/lib/ext/encoding.base64.model.yml +++ /dev/null @@ -1,8 +0,0 @@ -extensions: - - addsTo: - pack: codeql/go-all - extensible: summaryModel - data: - - ["encoding/base64", "", False, "NewDecoder", "", "", "Argument[1]", "ReturnValue", "taint", "manual"] - - ["encoding/base64", "Encoding", True, "Decode", "", "", "Argument[1]", "Argument[0]", "taint", "manual"] - - ["encoding/base64", "Encoding", True, "DecodeString", "", "", "Argument[0]", "ReturnValue[0]", "taint", "manual"] diff --git a/go/ql/lib/ext/encoding.binary.model.json b/go/ql/lib/ext/encoding.binary.model.json new file mode 100644 index 000000000000..adb1f52641ad --- /dev/null +++ b/go/ql/lib/ext/encoding.binary.model.json @@ -0,0 +1,14 @@ +{ + "extensions": [ + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "summaryModel" + }, + "data": [ + ["encoding/binary", "", false, "Read", "", "", "Argument[0]", "Argument[2]", "taint", "manual"], + ["encoding/binary", "", false, "Write", "", "", "Argument[2]", "Argument[0]", "taint", "manual"] + ] + } + ] +} diff --git a/go/ql/lib/ext/encoding.binary.model.yml b/go/ql/lib/ext/encoding.binary.model.yml deleted file mode 100644 index 34705c1364ed..000000000000 --- a/go/ql/lib/ext/encoding.binary.model.yml +++ /dev/null @@ -1,7 +0,0 @@ -extensions: - - addsTo: - pack: codeql/go-all - extensible: summaryModel - data: - - ["encoding/binary", "", False, "Read", "", "", "Argument[0]", "Argument[2]", "taint", "manual"] - - ["encoding/binary", "", False, "Write", "", "", "Argument[2]", "Argument[0]", "taint", "manual"] diff --git a/go/ql/lib/ext/encoding.csv.model.json b/go/ql/lib/ext/encoding.csv.model.json new file mode 100644 index 000000000000..6e6b83667f1c --- /dev/null +++ b/go/ql/lib/ext/encoding.csv.model.json @@ -0,0 +1,17 @@ +{ + "extensions": [ + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "summaryModel" + }, + "data": [ + ["encoding/csv", "", false, "NewReader", "", "", "Argument[0]", "ReturnValue", "taint", "manual"], + ["encoding/csv", "Reader", true, "Read", "", "", "Argument[receiver]", "ReturnValue[0]", "taint", "manual"], + ["encoding/csv", "Reader", true, "ReadAll", "", "", "Argument[receiver]", "ReturnValue[0]", "taint", "manual"], + ["encoding/csv", "Writer", true, "Write", "", "", "Argument[0]", "Argument[receiver]", "taint", "manual"], + ["encoding/csv", "Writer", true, "WriteAll", "", "", "Argument[0]", "Argument[receiver]", "taint", "manual"] + ] + } + ] +} diff --git a/go/ql/lib/ext/encoding.csv.model.yml b/go/ql/lib/ext/encoding.csv.model.yml deleted file mode 100644 index 2f2611ad83a6..000000000000 --- a/go/ql/lib/ext/encoding.csv.model.yml +++ /dev/null @@ -1,10 +0,0 @@ -extensions: - - addsTo: - pack: codeql/go-all - extensible: summaryModel - data: - - ["encoding/csv", "", False, "NewReader", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] - - ["encoding/csv", "Reader", True, "Read", "", "", "Argument[receiver]", "ReturnValue[0]", "taint", "manual"] - - ["encoding/csv", "Reader", True, "ReadAll", "", "", "Argument[receiver]", "ReturnValue[0]", "taint", "manual"] - - ["encoding/csv", "Writer", True, "Write", "", "", "Argument[0]", "Argument[receiver]", "taint", "manual"] - - ["encoding/csv", "Writer", True, "WriteAll", "", "", "Argument[0]", "Argument[receiver]", "taint", "manual"] diff --git a/go/ql/lib/ext/encoding.gob.model.json b/go/ql/lib/ext/encoding.gob.model.json new file mode 100644 index 000000000000..c9476296ab2e --- /dev/null +++ b/go/ql/lib/ext/encoding.gob.model.json @@ -0,0 +1,19 @@ +{ + "extensions": [ + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "summaryModel" + }, + "data": [ + ["encoding/gob", "", false, "NewDecoder", "", "", "Argument[0]", "ReturnValue", "taint", "manual"], + ["encoding/gob", "Decoder", true, "Decode", "", "", "Argument[receiver]", "Argument[0]", "taint", "manual"], + ["encoding/gob", "Decoder", true, "DecodeValue", "", "", "Argument[receiver]", "Argument[0]", "taint", "manual"], + ["encoding/gob", "Encoder", true, "Encode", "", "", "Argument[0]", "Argument[receiver]", "taint", "manual"], + ["encoding/gob", "Encoder", true, "EncodeValue", "", "", "Argument[0]", "Argument[receiver]", "taint", "manual"], + ["encoding/gob", "GobDecoder", true, "GobDecode", "", "", "Argument[0]", "Argument[receiver]", "taint", "manual"], + ["encoding/gob", "GobEncoder", true, "GobEncode", "", "", "Argument[receiver]", "ReturnValue[0]", "taint", "manual"] + ] + } + ] +} diff --git a/go/ql/lib/ext/encoding.gob.model.yml b/go/ql/lib/ext/encoding.gob.model.yml deleted file mode 100644 index c7ce389bd1c5..000000000000 --- a/go/ql/lib/ext/encoding.gob.model.yml +++ /dev/null @@ -1,12 +0,0 @@ -extensions: - - addsTo: - pack: codeql/go-all - extensible: summaryModel - data: - - ["encoding/gob", "", False, "NewDecoder", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] - - ["encoding/gob", "Decoder", True, "Decode", "", "", "Argument[receiver]", "Argument[0]", "taint", "manual"] - - ["encoding/gob", "Decoder", True, "DecodeValue", "", "", "Argument[receiver]", "Argument[0]", "taint", "manual"] - - ["encoding/gob", "Encoder", True, "Encode", "", "", "Argument[0]", "Argument[receiver]", "taint", "manual"] - - ["encoding/gob", "Encoder", True, "EncodeValue", "", "", "Argument[0]", "Argument[receiver]", "taint", "manual"] - - ["encoding/gob", "GobDecoder", True, "GobDecode", "", "", "Argument[0]", "Argument[receiver]", "taint", "manual"] - - ["encoding/gob", "GobEncoder", True, "GobEncode", "", "", "Argument[receiver]", "ReturnValue[0]", "taint", "manual"] diff --git a/go/ql/lib/ext/encoding.hex.model.json b/go/ql/lib/ext/encoding.hex.model.json new file mode 100644 index 000000000000..ccea39b511b0 --- /dev/null +++ b/go/ql/lib/ext/encoding.hex.model.json @@ -0,0 +1,15 @@ +{ + "extensions": [ + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "summaryModel" + }, + "data": [ + ["encoding/hex", "", false, "Decode", "", "", "Argument[1]", "Argument[0]", "taint", "manual"], + ["encoding/hex", "", false, "DecodeString", "", "", "Argument[0]", "ReturnValue[0]", "taint", "manual"], + ["encoding/hex", "", false, "NewDecoder", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] + ] + } + ] +} diff --git a/go/ql/lib/ext/encoding.hex.model.yml b/go/ql/lib/ext/encoding.hex.model.yml deleted file mode 100644 index 2c9dbdac031c..000000000000 --- a/go/ql/lib/ext/encoding.hex.model.yml +++ /dev/null @@ -1,8 +0,0 @@ -extensions: - - addsTo: - pack: codeql/go-all - extensible: summaryModel - data: - - ["encoding/hex", "", False, "Decode", "", "", "Argument[1]", "Argument[0]", "taint", "manual"] - - ["encoding/hex", "", False, "DecodeString", "", "", "Argument[0]", "ReturnValue[0]", "taint", "manual"] - - ["encoding/hex", "", False, "NewDecoder", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] diff --git a/go/ql/lib/ext/encoding.json.jsontext.model.json b/go/ql/lib/ext/encoding.json.jsontext.model.json new file mode 100644 index 000000000000..98e8233b6f4a --- /dev/null +++ b/go/ql/lib/ext/encoding.json.jsontext.model.json @@ -0,0 +1,43 @@ +{ + "extensions": [ + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "summaryModel" + }, + "data": [ + ["encoding/json/jsontext", "", false, "AppendFloat", "", "", "Argument[0..1]", "ReturnValue", "taint", "manual"], + ["encoding/json/jsontext", "", false, "AppendFormat", "", "", "Argument[0..1]", "ReturnValue[0]", "taint", "manual"], + ["encoding/json/jsontext", "", false, "AppendQuote", "", "", "Argument[0..1]", "ReturnValue[0]", "taint", "manual"], + ["encoding/json/jsontext", "", false, "AppendUnquote", "", "", "Argument[0..1]", "ReturnValue[0]", "taint", "manual"], + ["encoding/json/jsontext", "", false, "NewDecoder", "", "", "Argument[0]", "ReturnValue", "taint", "manual"], + ["encoding/json/jsontext", "", false, "Float", "", "", "Argument[0]", "ReturnValue", "taint", "manual"], + ["encoding/json/jsontext", "", false, "Float32", "", "", "Argument[0]", "ReturnValue", "taint", "manual"], + ["encoding/json/jsontext", "", false, "Int", "", "", "Argument[0]", "ReturnValue", "taint", "manual"], + ["encoding/json/jsontext", "", false, "String", "", "", "Argument[0]", "ReturnValue", "taint", "manual"], + ["encoding/json/jsontext", "", false, "Uint", "", "", "Argument[0]", "ReturnValue", "taint", "manual"], + ["encoding/json/jsontext", "Decoder", true, "ReadToken", "", "", "Argument[receiver]", "ReturnValue[0]", "taint", "manual"], + ["encoding/json/jsontext", "Decoder", true, "ReadValue", "", "", "Argument[receiver]", "ReturnValue[0]", "taint", "manual"], + ["encoding/json/jsontext", "Decoder", true, "Reset", "", "", "Argument[0]", "Argument[receiver]", "taint", "manual"], + ["encoding/json/jsontext", "Decoder", true, "UnreadBuffer", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"], + ["encoding/json/jsontext", "Encoder", true, "Reset", "", "", "Argument[receiver]", "Argument[0]", "taint", "manual"], + ["encoding/json/jsontext", "Encoder", true, "WriteToken", "", "", "Argument[0]", "Argument[receiver]", "taint", "manual"], + ["encoding/json/jsontext", "Encoder", true, "WriteValue", "", "", "Argument[0]", "Argument[receiver]", "taint", "manual"], + ["encoding/json/jsontext", "Pointer", true, "AppendToken", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"], + ["encoding/json/jsontext", "Pointer", true, "AppendToken", "", "", "Argument[0]", "ReturnValue", "taint", "manual"], + ["encoding/json/jsontext", "Pointer", true, "LastToken", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"], + ["encoding/json/jsontext", "Pointer", true, "Parent", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"], + ["encoding/json/jsontext", "Token", true, "Clone", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"], + ["encoding/json/jsontext", "Token", true, "Float", "", "", "Argument[receiver]", "ReturnValue[0]", "taint", "manual"], + ["encoding/json/jsontext", "Token", true, "Float32", "", "", "Argument[receiver]", "ReturnValue[0]", "taint", "manual"], + ["encoding/json/jsontext", "Token", true, "Int", "", "", "Argument[receiver]", "ReturnValue[0]", "taint", "manual"], + ["encoding/json/jsontext", "Token", true, "String", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"], + ["encoding/json/jsontext", "Token", true, "Uint", "", "", "Argument[receiver]", "ReturnValue[0]", "taint", "manual"], + ["encoding/json/jsontext", "Value", true, "Clone", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"], + ["encoding/json/jsontext", "Value", true, "MarshalJSON", "", "", "Argument[receiver]", "ReturnValue[0]", "taint", "manual"], + ["encoding/json/jsontext", "Value", true, "String", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"], + ["encoding/json/jsontext", "Value", true, "UnmarshalJSON", "", "", "Argument[0]", "Argument[receiver]", "taint", "manual"] + ] + } + ] +} diff --git a/go/ql/lib/ext/encoding.json.jsontext.model.yml b/go/ql/lib/ext/encoding.json.jsontext.model.yml deleted file mode 100644 index d04afceaefe2..000000000000 --- a/go/ql/lib/ext/encoding.json.jsontext.model.yml +++ /dev/null @@ -1,36 +0,0 @@ -extensions: - - addsTo: - pack: codeql/go-all - extensible: summaryModel - data: - - ["encoding/json/jsontext", "", False, "AppendFloat", "", "", "Argument[0..1]", "ReturnValue", "taint", "manual"] - - ["encoding/json/jsontext", "", False, "AppendFormat", "", "", "Argument[0..1]", "ReturnValue[0]", "taint", "manual"] - - ["encoding/json/jsontext", "", False, "AppendQuote", "", "", "Argument[0..1]", "ReturnValue[0]", "taint", "manual"] - - ["encoding/json/jsontext", "", False, "AppendUnquote", "", "", "Argument[0..1]", "ReturnValue[0]", "taint", "manual"] - - ["encoding/json/jsontext", "", False, "NewDecoder", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] - - ["encoding/json/jsontext", "", False, "Float", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] - - ["encoding/json/jsontext", "", False, "Float32", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] - - ["encoding/json/jsontext", "", False, "Int", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] - - ["encoding/json/jsontext", "", False, "String", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] - - ["encoding/json/jsontext", "", False, "Uint", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] - - ["encoding/json/jsontext", "Decoder", True, "ReadToken", "", "", "Argument[receiver]", "ReturnValue[0]", "taint", "manual"] - - ["encoding/json/jsontext", "Decoder", True, "ReadValue", "", "", "Argument[receiver]", "ReturnValue[0]", "taint", "manual"] - - ["encoding/json/jsontext", "Decoder", True, "Reset", "", "", "Argument[0]", "Argument[receiver]", "taint", "manual"] - - ["encoding/json/jsontext", "Decoder", True, "UnreadBuffer", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] - - ["encoding/json/jsontext", "Encoder", True, "Reset", "", "", "Argument[receiver]", "Argument[0]", "taint", "manual"] - - ["encoding/json/jsontext", "Encoder", True, "WriteToken", "", "", "Argument[0]", "Argument[receiver]", "taint", "manual"] - - ["encoding/json/jsontext", "Encoder", True, "WriteValue", "", "", "Argument[0]", "Argument[receiver]", "taint", "manual"] - - ["encoding/json/jsontext", "Pointer", True, "AppendToken", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] - - ["encoding/json/jsontext", "Pointer", True, "AppendToken", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] - - ["encoding/json/jsontext", "Pointer", True, "LastToken", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] - - ["encoding/json/jsontext", "Pointer", True, "Parent", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] - - ["encoding/json/jsontext", "Token", True, "Clone", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] - - ["encoding/json/jsontext", "Token", True, "Float", "", "", "Argument[receiver]", "ReturnValue[0]", "taint", "manual"] - - ["encoding/json/jsontext", "Token", True, "Float32", "", "", "Argument[receiver]", "ReturnValue[0]", "taint", "manual"] - - ["encoding/json/jsontext", "Token", True, "Int", "", "", "Argument[receiver]", "ReturnValue[0]", "taint", "manual"] - - ["encoding/json/jsontext", "Token", True, "String", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] - - ["encoding/json/jsontext", "Token", True, "Uint", "", "", "Argument[receiver]", "ReturnValue[0]", "taint", "manual"] - - ["encoding/json/jsontext", "Value", True, "Clone", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] - - ["encoding/json/jsontext", "Value", True, "MarshalJSON", "", "", "Argument[receiver]", "ReturnValue[0]", "taint", "manual"] - - ["encoding/json/jsontext", "Value", True, "String", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] - - ["encoding/json/jsontext", "Value", True, "UnmarshalJSON", "", "", "Argument[0]", "Argument[receiver]", "taint", "manual"] diff --git a/go/ql/lib/ext/encoding.json.model.json b/go/ql/lib/ext/encoding.json.model.json new file mode 100644 index 000000000000..d0a43a66903b --- /dev/null +++ b/go/ql/lib/ext/encoding.json.model.json @@ -0,0 +1,26 @@ +{ + "extensions": [ + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "summaryModel" + }, + "data": [ + ["encoding/json", "", false, "Compact", "", "", "Argument[1]", "Argument[0]", "taint", "manual"], + ["encoding/json", "", false, "HTMLEscape", "", "", "Argument[1]", "Argument[0]", "taint", "manual"], + ["encoding/json", "", false, "Indent", "", "", "Argument[1..3]", "Argument[0]", "taint", "manual"], + ["encoding/json", "", false, "Marshal", "", "", "Argument[0]", "ReturnValue[0]", "taint", "manual"], + ["encoding/json", "", false, "MarshalIndent", "", "", "Argument[0..2]", "ReturnValue[0]", "taint", "manual"], + ["encoding/json", "", false, "NewDecoder", "", "", "Argument[0]", "ReturnValue", "taint", "manual"], + ["encoding/json", "", false, "Unmarshal", "", "", "Argument[0]", "Argument[1]", "taint", "manual"], + ["encoding/json", "Decoder", true, "Buffered", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"], + ["encoding/json", "Decoder", true, "Decode", "", "", "Argument[receiver]", "Argument[0]", "taint", "manual"], + ["encoding/json", "Decoder", true, "Token", "", "", "Argument[receiver]", "ReturnValue[0]", "taint", "manual"], + ["encoding/json", "Encoder", true, "Encode", "", "", "Argument[0]", "Argument[receiver]", "taint", "manual"], + ["encoding/json", "Encoder", true, "SetIndent", "", "", "Argument[0..1]", "Argument[receiver]", "taint", "manual"], + ["encoding/json", "Marshaler", true, "MarshalJSON", "", "", "Argument[receiver]", "ReturnValue[0]", "taint", "manual"], + ["encoding/json", "Unmarshaler", true, "UnmarshalJSON", "", "", "Argument[0]", "Argument[receiver]", "taint", "manual"] + ] + } + ] +} diff --git a/go/ql/lib/ext/encoding.json.model.yml b/go/ql/lib/ext/encoding.json.model.yml deleted file mode 100644 index b820561fa95c..000000000000 --- a/go/ql/lib/ext/encoding.json.model.yml +++ /dev/null @@ -1,19 +0,0 @@ -extensions: - - addsTo: - pack: codeql/go-all - extensible: summaryModel - data: - - ["encoding/json", "", False, "Compact", "", "", "Argument[1]", "Argument[0]", "taint", "manual"] - - ["encoding/json", "", False, "HTMLEscape", "", "", "Argument[1]", "Argument[0]", "taint", "manual"] - - ["encoding/json", "", False, "Indent", "", "", "Argument[1..3]", "Argument[0]", "taint", "manual"] - - ["encoding/json", "", False, "Marshal", "", "", "Argument[0]", "ReturnValue[0]", "taint", "manual"] - - ["encoding/json", "", False, "MarshalIndent", "", "", "Argument[0..2]", "ReturnValue[0]", "taint", "manual"] - - ["encoding/json", "", False, "NewDecoder", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] - - ["encoding/json", "", False, "Unmarshal", "", "", "Argument[0]", "Argument[1]", "taint", "manual"] - - ["encoding/json", "Decoder", True, "Buffered", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] - - ["encoding/json", "Decoder", True, "Decode", "", "", "Argument[receiver]", "Argument[0]", "taint", "manual"] - - ["encoding/json", "Decoder", True, "Token", "", "", "Argument[receiver]", "ReturnValue[0]", "taint", "manual"] - - ["encoding/json", "Encoder", True, "Encode", "", "", "Argument[0]", "Argument[receiver]", "taint", "manual"] - - ["encoding/json", "Encoder", True, "SetIndent", "", "", "Argument[0..1]", "Argument[receiver]", "taint", "manual"] - - ["encoding/json", "Marshaler", True, "MarshalJSON", "", "", "Argument[receiver]", "ReturnValue[0]", "taint", "manual"] - - ["encoding/json", "Unmarshaler", True, "UnmarshalJSON", "", "", "Argument[0]", "Argument[receiver]", "taint", "manual"] diff --git a/go/ql/lib/ext/encoding.model.json b/go/ql/lib/ext/encoding.model.json new file mode 100644 index 000000000000..6333f0e30008 --- /dev/null +++ b/go/ql/lib/ext/encoding.model.json @@ -0,0 +1,20 @@ +{ + "extensions": [ + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "summaryModel" + }, + "data": [ + ["encoding", "BinaryAppender", true, "AppendBinary", "", "", "Argument[receiver]", "ReturnValue[0]", "taint", "manual"], + ["encoding", "BinaryAppender", true, "AppendBinary", "", "", "Argument[0]", "ReturnValue[0]", "taint", "manual"], + ["encoding", "BinaryMarshaler", true, "MarshalBinary", "", "", "Argument[receiver]", "ReturnValue[0]", "taint", "manual"], + ["encoding", "BinaryUnmarshaler", true, "UnmarshalBinary", "", "", "Argument[0]", "Argument[receiver]", "taint", "manual"], + ["encoding", "TextAppender", true, "AppendText", "", "", "Argument[receiver]", "ReturnValue[0]", "taint", "manual"], + ["encoding", "TextAppender", true, "AppendText", "", "", "Argument[0]", "ReturnValue[0]", "taint", "manual"], + ["encoding", "TextMarshaler", true, "MarshalText", "", "", "Argument[receiver]", "ReturnValue[0]", "taint", "manual"], + ["encoding", "TextUnmarshaler", true, "UnmarshalText", "", "", "Argument[0]", "Argument[receiver]", "taint", "manual"] + ] + } + ] +} diff --git a/go/ql/lib/ext/encoding.model.yml b/go/ql/lib/ext/encoding.model.yml deleted file mode 100644 index f2f48e3ebfe6..000000000000 --- a/go/ql/lib/ext/encoding.model.yml +++ /dev/null @@ -1,13 +0,0 @@ -extensions: - - addsTo: - pack: codeql/go-all - extensible: summaryModel - data: - - ["encoding", "BinaryAppender", True, "AppendBinary", "", "", "Argument[receiver]", "ReturnValue[0]", "taint", "manual"] - - ["encoding", "BinaryAppender", True, "AppendBinary", "", "", "Argument[0]", "ReturnValue[0]", "taint", "manual"] - - ["encoding", "BinaryMarshaler", True, "MarshalBinary", "", "", "Argument[receiver]", "ReturnValue[0]", "taint", "manual"] - - ["encoding", "BinaryUnmarshaler", True, "UnmarshalBinary", "", "", "Argument[0]", "Argument[receiver]", "taint", "manual"] - - ["encoding", "TextAppender", True, "AppendText", "", "", "Argument[receiver]", "ReturnValue[0]", "taint", "manual"] - - ["encoding", "TextAppender", True, "AppendText", "", "", "Argument[0]", "ReturnValue[0]", "taint", "manual"] - - ["encoding", "TextMarshaler", True, "MarshalText", "", "", "Argument[receiver]", "ReturnValue[0]", "taint", "manual"] - - ["encoding", "TextUnmarshaler", True, "UnmarshalText", "", "", "Argument[0]", "Argument[receiver]", "taint", "manual"] diff --git a/go/ql/lib/ext/encoding.pem.model.json b/go/ql/lib/ext/encoding.pem.model.json new file mode 100644 index 000000000000..49661486b274 --- /dev/null +++ b/go/ql/lib/ext/encoding.pem.model.json @@ -0,0 +1,15 @@ +{ + "extensions": [ + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "summaryModel" + }, + "data": [ + ["encoding/pem", "", false, "Decode", "", "", "Argument[0]", "ReturnValue[0..1]", "taint", "manual"], + ["encoding/pem", "", false, "Encode", "", "", "Argument[1]", "Argument[0]", "taint", "manual"], + ["encoding/pem", "", false, "EncodeToMemory", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] + ] + } + ] +} diff --git a/go/ql/lib/ext/encoding.pem.model.yml b/go/ql/lib/ext/encoding.pem.model.yml deleted file mode 100644 index 57c0f1fc662d..000000000000 --- a/go/ql/lib/ext/encoding.pem.model.yml +++ /dev/null @@ -1,8 +0,0 @@ -extensions: - - addsTo: - pack: codeql/go-all - extensible: summaryModel - data: - - ["encoding/pem", "", False, "Decode", "", "", "Argument[0]", "ReturnValue[0..1]", "taint", "manual"] - - ["encoding/pem", "", False, "Encode", "", "", "Argument[1]", "Argument[0]", "taint", "manual"] - - ["encoding/pem", "", False, "EncodeToMemory", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] diff --git a/go/ql/lib/ext/encoding.xml.model.json b/go/ql/lib/ext/encoding.xml.model.json new file mode 100644 index 000000000000..2be68702b427 --- /dev/null +++ b/go/ql/lib/ext/encoding.xml.model.json @@ -0,0 +1,35 @@ +{ + "extensions": [ + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "summaryModel" + }, + "data": [ + ["encoding/xml", "", false, "CopyToken", "", "", "Argument[0]", "ReturnValue", "taint", "manual"], + ["encoding/xml", "", false, "Escape", "", "", "Argument[1]", "Argument[0]", "taint", "manual"], + ["encoding/xml", "", false, "EscapeText", "", "", "Argument[1]", "Argument[0]", "taint", "manual"], + ["encoding/xml", "", false, "Marshal", "", "", "Argument[0]", "ReturnValue[0]", "taint", "manual"], + ["encoding/xml", "", false, "MarshalIndent", "", "", "Argument[0..2]", "ReturnValue[0]", "taint", "manual"], + ["encoding/xml", "", false, "NewDecoder", "", "", "Argument[0]", "ReturnValue", "taint", "manual"], + ["encoding/xml", "", false, "NewTokenDecoder", "", "", "Argument[0]", "ReturnValue", "taint", "manual"], + ["encoding/xml", "", false, "Unmarshal", "", "", "Argument[0]", "Argument[1]", "taint", "manual"], + ["encoding/xml", "CharData", true, "Copy", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"], + ["encoding/xml", "Comment", true, "Copy", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"], + ["encoding/xml", "Decoder", true, "Decode", "", "", "Argument[receiver]", "Argument[0]", "taint", "manual"], + ["encoding/xml", "Decoder", true, "DecodeElement", "", "", "Argument[receiver]", "Argument[0]", "taint", "manual"], + ["encoding/xml", "Decoder", true, "RawToken", "", "", "Argument[receiver]", "ReturnValue[0]", "taint", "manual"], + ["encoding/xml", "Directive", true, "Copy", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"], + ["encoding/xml", "Encoder", true, "Encode", "", "", "Argument[0]", "Argument[receiver]", "taint", "manual"], + ["encoding/xml", "Encoder", true, "EncodeElement", "", "", "Argument[0]", "Argument[receiver]", "taint", "manual"], + ["encoding/xml", "Encoder", true, "EncodeToken", "", "", "Argument[0]", "Argument[receiver]", "taint", "manual"], + ["encoding/xml", "Encoder", true, "Indent", "", "", "Argument[0..1]", "Argument[receiver]", "taint", "manual"], + ["encoding/xml", "Marshaler", true, "MarshalXML", "", "", "Argument[receiver]", "Argument[0]", "taint", "manual"], + ["encoding/xml", "ProcInst", true, "Copy", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"], + ["encoding/xml", "StartElement", true, "Copy", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"], + ["encoding/xml", "TokenReader", true, "Token", "", "", "Argument[receiver]", "ReturnValue[0]", "taint", "manual"], + ["encoding/xml", "Unmarshaler", true, "UnmarshalXML", "", "", "Argument[0]", "Argument[receiver]", "taint", "manual"] + ] + } + ] +} diff --git a/go/ql/lib/ext/encoding.xml.model.yml b/go/ql/lib/ext/encoding.xml.model.yml deleted file mode 100644 index 40824a28c9eb..000000000000 --- a/go/ql/lib/ext/encoding.xml.model.yml +++ /dev/null @@ -1,28 +0,0 @@ -extensions: - - addsTo: - pack: codeql/go-all - extensible: summaryModel - data: - - ["encoding/xml", "", False, "CopyToken", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] - - ["encoding/xml", "", False, "Escape", "", "", "Argument[1]", "Argument[0]", "taint", "manual"] - - ["encoding/xml", "", False, "EscapeText", "", "", "Argument[1]", "Argument[0]", "taint", "manual"] - - ["encoding/xml", "", False, "Marshal", "", "", "Argument[0]", "ReturnValue[0]", "taint", "manual"] - - ["encoding/xml", "", False, "MarshalIndent", "", "", "Argument[0..2]", "ReturnValue[0]", "taint", "manual"] - - ["encoding/xml", "", False, "NewDecoder", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] - - ["encoding/xml", "", False, "NewTokenDecoder", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] - - ["encoding/xml", "", False, "Unmarshal", "", "", "Argument[0]", "Argument[1]", "taint", "manual"] - - ["encoding/xml", "CharData", True, "Copy", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] - - ["encoding/xml", "Comment", True, "Copy", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] - - ["encoding/xml", "Decoder", True, "Decode", "", "", "Argument[receiver]", "Argument[0]", "taint", "manual"] - - ["encoding/xml", "Decoder", True, "DecodeElement", "", "", "Argument[receiver]", "Argument[0]", "taint", "manual"] - - ["encoding/xml", "Decoder", True, "RawToken", "", "", "Argument[receiver]", "ReturnValue[0]", "taint", "manual"] - - ["encoding/xml", "Directive", True, "Copy", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] - - ["encoding/xml", "Encoder", True, "Encode", "", "", "Argument[0]", "Argument[receiver]", "taint", "manual"] - - ["encoding/xml", "Encoder", True, "EncodeElement", "", "", "Argument[0]", "Argument[receiver]", "taint", "manual"] - - ["encoding/xml", "Encoder", True, "EncodeToken", "", "", "Argument[0]", "Argument[receiver]", "taint", "manual"] - - ["encoding/xml", "Encoder", True, "Indent", "", "", "Argument[0..1]", "Argument[receiver]", "taint", "manual"] - - ["encoding/xml", "Marshaler", True, "MarshalXML", "", "", "Argument[receiver]", "Argument[0]", "taint", "manual"] - - ["encoding/xml", "ProcInst", True, "Copy", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] - - ["encoding/xml", "StartElement", True, "Copy", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] - - ["encoding/xml", "TokenReader", True, "Token", "", "", "Argument[receiver]", "ReturnValue[0]", "taint", "manual"] - - ["encoding/xml", "Unmarshaler", True, "UnmarshalXML", "", "", "Argument[0]", "Argument[receiver]", "taint", "manual"] diff --git a/go/ql/lib/ext/errors.model.json b/go/ql/lib/ext/errors.model.json new file mode 100644 index 000000000000..04de72d2df43 --- /dev/null +++ b/go/ql/lib/ext/errors.model.json @@ -0,0 +1,16 @@ +{ + "extensions": [ + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "summaryModel" + }, + "data": [ + ["errors", "", false, "As", "", "", "Argument[0]", "Argument[1]", "taint", "manual"], + ["errors", "", false, "AsType", "", "", "Argument[0]", "ReturnValue[0]", "taint", "manual"], + ["errors", "", false, "New", "", "", "Argument[0]", "ReturnValue", "taint", "manual"], + ["errors", "", false, "Unwrap", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] + ] + } + ] +} diff --git a/go/ql/lib/ext/errors.model.yml b/go/ql/lib/ext/errors.model.yml deleted file mode 100644 index 36b17a49ee02..000000000000 --- a/go/ql/lib/ext/errors.model.yml +++ /dev/null @@ -1,9 +0,0 @@ -extensions: - - addsTo: - pack: codeql/go-all - extensible: summaryModel - data: - - ["errors", "", False, "As", "", "", "Argument[0]", "Argument[1]", "taint", "manual"] - - ["errors", "", False, "AsType", "", "", "Argument[0]", "ReturnValue[0]", "taint", "manual"] - - ["errors", "", False, "New", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] - - ["errors", "", False, "Unwrap", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] diff --git a/go/ql/lib/ext/expvar.model.json b/go/ql/lib/ext/expvar.model.json new file mode 100644 index 000000000000..ad108f5fdff9 --- /dev/null +++ b/go/ql/lib/ext/expvar.model.json @@ -0,0 +1,18 @@ +{ + "extensions": [ + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "summaryModel" + }, + "data": [ + ["expvar", "Func", true, "Value", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"], + ["expvar", "Map", true, "Get", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"], + ["expvar", "Map", true, "Set", "", "", "Argument[0..1]", "Argument[receiver]", "taint", "manual"], + ["expvar", "String", true, "Set", "", "", "Argument[0]", "Argument[receiver]", "taint", "manual"], + ["expvar", "String", true, "Value", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"], + ["expvar", "Var", true, "String", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] + ] + } + ] +} diff --git a/go/ql/lib/ext/expvar.model.yml b/go/ql/lib/ext/expvar.model.yml deleted file mode 100644 index 1cbfc5956568..000000000000 --- a/go/ql/lib/ext/expvar.model.yml +++ /dev/null @@ -1,11 +0,0 @@ -extensions: - - addsTo: - pack: codeql/go-all - extensible: summaryModel - data: - - ["expvar", "Func", True, "Value", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] - - ["expvar", "Map", True, "Get", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] - - ["expvar", "Map", True, "Set", "", "", "Argument[0..1]", "Argument[receiver]", "taint", "manual"] - - ["expvar", "String", True, "Set", "", "", "Argument[0]", "Argument[receiver]", "taint", "manual"] - - ["expvar", "String", True, "Value", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] - - ["expvar", "Var", True, "String", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] diff --git a/go/ql/lib/ext/fmt.model.json b/go/ql/lib/ext/fmt.model.json new file mode 100644 index 000000000000..2eff48e2c9b6 --- /dev/null +++ b/go/ql/lib/ext/fmt.model.json @@ -0,0 +1,39 @@ +{ + "extensions": [ + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "sinkModel" + }, + "data": [ + ["fmt", "", false, "Print", "", "", "Argument[0]", "log-injection", "manual"], + ["fmt", "", false, "Printf", "", "", "Argument[0..1]", "log-injection", "manual"], + ["fmt", "", false, "Println", "", "", "Argument[0]", "log-injection", "manual"] + ] + }, + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "summaryModel" + }, + "data": [ + ["fmt", "GoStringer", true, "GoString", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"], + ["fmt", "ScanState", true, "Read", "", "", "Argument[receiver]", "Argument[0]", "taint", "manual"], + ["fmt", "ScanState", true, "Token", "", "", "Argument[receiver]", "ReturnValue[0]", "taint", "manual"], + ["fmt", "State", true, "Write", "", "", "Argument[0]", "Argument[receiver]", "taint", "manual"], + ["fmt", "Stringer", true, "String", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"], + ["fmt", "", false, "Append", "", "", "Argument[0]", "ReturnValue", "taint", "manual"], + ["fmt", "", false, "Append", "", "", "Argument[1].ArrayElement", "ReturnValue", "taint", "manual"], + ["fmt", "", false, "Appendf", "", "", "Argument[0]", "ReturnValue", "taint", "manual"], + ["fmt", "", false, "Appendf", "", "", "Argument[1]", "ReturnValue", "taint", "manual"], + ["fmt", "", false, "Appendf", "", "", "Argument[2].ArrayElement", "ReturnValue", "taint", "manual"], + ["fmt", "", false, "Appendln", "", "", "Argument[0]", "ReturnValue", "taint", "manual"], + ["fmt", "", false, "Appendln", "", "", "Argument[1].ArrayElement", "ReturnValue", "taint", "manual"], + ["fmt", "", false, "Sprint", "", "", "Argument[0].ArrayElement", "ReturnValue", "taint", "manual"], + ["fmt", "", false, "Sprintf", "", "", "Argument[0]", "ReturnValue", "taint", "manual"], + ["fmt", "", false, "Sprintf", "", "", "Argument[1].ArrayElement", "ReturnValue", "taint", "manual"], + ["fmt", "", false, "Sprintln", "", "", "Argument[0].ArrayElement", "ReturnValue", "taint", "manual"] + ] + } + ] +} diff --git a/go/ql/lib/ext/fmt.model.yml b/go/ql/lib/ext/fmt.model.yml deleted file mode 100644 index 2baac68da3a0..000000000000 --- a/go/ql/lib/ext/fmt.model.yml +++ /dev/null @@ -1,28 +0,0 @@ -extensions: - - addsTo: - pack: codeql/go-all - extensible: sinkModel - data: - - ["fmt", "", False, "Print", "", "", "Argument[0]", "log-injection", "manual"] - - ["fmt", "", False, "Printf", "", "", "Argument[0..1]", "log-injection", "manual"] - - ["fmt", "", False, "Println", "", "", "Argument[0]", "log-injection", "manual"] - - addsTo: - pack: codeql/go-all - extensible: summaryModel - data: - - ["fmt", "GoStringer", True, "GoString", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] - - ["fmt", "ScanState", True, "Read", "", "", "Argument[receiver]", "Argument[0]", "taint", "manual"] - - ["fmt", "ScanState", True, "Token", "", "", "Argument[receiver]", "ReturnValue[0]", "taint", "manual"] - - ["fmt", "State", True, "Write", "", "", "Argument[0]", "Argument[receiver]", "taint", "manual"] - - ["fmt", "Stringer", True, "String", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] - - ["fmt", "", False, "Append", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] - - ["fmt", "", False, "Append", "", "", "Argument[1].ArrayElement", "ReturnValue", "taint", "manual"] - - ["fmt", "", False, "Appendf", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] - - ["fmt", "", False, "Appendf", "", "", "Argument[1]", "ReturnValue", "taint", "manual"] - - ["fmt", "", False, "Appendf", "", "", "Argument[2].ArrayElement", "ReturnValue", "taint", "manual"] - - ["fmt", "", False, "Appendln", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] - - ["fmt", "", False, "Appendln", "", "", "Argument[1].ArrayElement", "ReturnValue", "taint", "manual"] - - ["fmt", "", False, "Sprint", "", "", "Argument[0].ArrayElement", "ReturnValue", "taint", "manual"] - - ["fmt", "", False, "Sprintf", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] - - ["fmt", "", False, "Sprintf", "", "", "Argument[1].ArrayElement", "ReturnValue", "taint", "manual"] - - ["fmt", "", False, "Sprintln", "", "", "Argument[0].ArrayElement", "ReturnValue", "taint", "manual"] diff --git a/go/ql/lib/ext/github.com.antchfx.htmlquery.model.json b/go/ql/lib/ext/github.com.antchfx.htmlquery.model.json new file mode 100644 index 000000000000..630e737edbfa --- /dev/null +++ b/go/ql/lib/ext/github.com.antchfx.htmlquery.model.json @@ -0,0 +1,16 @@ +{ + "extensions": [ + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "sinkModel" + }, + "data": [ + ["github.com/antchfx/htmlquery", "", false, "Find", "", "", "Argument[1]", "xpath-injection", "manual"], + ["github.com/antchfx/htmlquery", "", false, "FindOne", "", "", "Argument[1]", "xpath-injection", "manual"], + ["github.com/antchfx/htmlquery", "", false, "Query", "", "", "Argument[1]", "xpath-injection", "manual"], + ["github.com/antchfx/htmlquery", "", false, "QueryAll", "", "", "Argument[1]", "xpath-injection", "manual"] + ] + } + ] +} diff --git a/go/ql/lib/ext/github.com.antchfx.htmlquery.model.yml b/go/ql/lib/ext/github.com.antchfx.htmlquery.model.yml deleted file mode 100644 index 14402f65a8c1..000000000000 --- a/go/ql/lib/ext/github.com.antchfx.htmlquery.model.yml +++ /dev/null @@ -1,9 +0,0 @@ -extensions: - - addsTo: - pack: codeql/go-all - extensible: sinkModel - data: - - ["github.com/antchfx/htmlquery", "", False, "Find", "", "", "Argument[1]", "xpath-injection", "manual"] - - ["github.com/antchfx/htmlquery", "", False, "FindOne", "", "", "Argument[1]", "xpath-injection", "manual"] - - ["github.com/antchfx/htmlquery", "", False, "Query", "", "", "Argument[1]", "xpath-injection", "manual"] - - ["github.com/antchfx/htmlquery", "", False, "QueryAll", "", "", "Argument[1]", "xpath-injection", "manual"] diff --git a/go/ql/lib/ext/github.com.antchfx.jsonquery.model.json b/go/ql/lib/ext/github.com.antchfx.jsonquery.model.json new file mode 100644 index 000000000000..2d337352535e --- /dev/null +++ b/go/ql/lib/ext/github.com.antchfx.jsonquery.model.json @@ -0,0 +1,16 @@ +{ + "extensions": [ + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "sinkModel" + }, + "data": [ + ["github.com/antchfx/jsonquery", "", false, "Find", "", "", "Argument[1]", "xpath-injection", "manual"], + ["github.com/antchfx/jsonquery", "", false, "FindOne", "", "", "Argument[1]", "xpath-injection", "manual"], + ["github.com/antchfx/jsonquery", "", false, "Query", "", "", "Argument[1]", "xpath-injection", "manual"], + ["github.com/antchfx/jsonquery", "", false, "QueryAll", "", "", "Argument[1]", "xpath-injection", "manual"] + ] + } + ] +} diff --git a/go/ql/lib/ext/github.com.antchfx.jsonquery.model.yml b/go/ql/lib/ext/github.com.antchfx.jsonquery.model.yml deleted file mode 100644 index f50bbff2ff4d..000000000000 --- a/go/ql/lib/ext/github.com.antchfx.jsonquery.model.yml +++ /dev/null @@ -1,9 +0,0 @@ -extensions: - - addsTo: - pack: codeql/go-all - extensible: sinkModel - data: - - ["github.com/antchfx/jsonquery", "", False, "Find", "", "", "Argument[1]", "xpath-injection", "manual"] - - ["github.com/antchfx/jsonquery", "", False, "FindOne", "", "", "Argument[1]", "xpath-injection", "manual"] - - ["github.com/antchfx/jsonquery", "", False, "Query", "", "", "Argument[1]", "xpath-injection", "manual"] - - ["github.com/antchfx/jsonquery", "", False, "QueryAll", "", "", "Argument[1]", "xpath-injection", "manual"] diff --git a/go/ql/lib/ext/github.com.antchfx.xmlquery.model.json b/go/ql/lib/ext/github.com.antchfx.xmlquery.model.json new file mode 100644 index 000000000000..9e4a2de633ac --- /dev/null +++ b/go/ql/lib/ext/github.com.antchfx.xmlquery.model.json @@ -0,0 +1,20 @@ +{ + "extensions": [ + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "sinkModel" + }, + "data": [ + ["github.com/antchfx/xmlquery", "", false, "Find", "", "", "Argument[1]", "xpath-injection", "manual"], + ["github.com/antchfx/xmlquery", "", false, "FindOne", "", "", "Argument[1]", "xpath-injection", "manual"], + ["github.com/antchfx/xmlquery", "", false, "FindEach", "", "", "Argument[1]", "xpath-injection", "manual"], + ["github.com/antchfx/xmlquery", "", false, "FindEachWithBreak", "", "", "Argument[1]", "xpath-injection", "manual"], + ["github.com/antchfx/xmlquery", "", false, "Query", "", "", "Argument[1]", "xpath-injection", "manual"], + ["github.com/antchfx/xmlquery", "", false, "QueryAll", "", "", "Argument[1]", "xpath-injection", "manual"], + ["github.com/antchfx/xmlquery", "Node", true, "SelectElement", "", "", "Argument[0]", "xpath-injection", "manual"], + ["github.com/antchfx/xmlquery", "Node", true, "SelectElements", "", "", "Argument[0]", "xpath-injection", "manual"] + ] + } + ] +} diff --git a/go/ql/lib/ext/github.com.antchfx.xmlquery.model.yml b/go/ql/lib/ext/github.com.antchfx.xmlquery.model.yml deleted file mode 100644 index 5a9eec5af7e0..000000000000 --- a/go/ql/lib/ext/github.com.antchfx.xmlquery.model.yml +++ /dev/null @@ -1,13 +0,0 @@ -extensions: - - addsTo: - pack: codeql/go-all - extensible: sinkModel - data: - - ["github.com/antchfx/xmlquery", "", False, "Find", "", "", "Argument[1]", "xpath-injection", "manual"] - - ["github.com/antchfx/xmlquery", "", False, "FindOne", "", "", "Argument[1]", "xpath-injection", "manual"] - - ["github.com/antchfx/xmlquery", "", False, "FindEach", "", "", "Argument[1]", "xpath-injection", "manual"] - - ["github.com/antchfx/xmlquery", "", False, "FindEachWithBreak", "", "", "Argument[1]", "xpath-injection", "manual"] - - ["github.com/antchfx/xmlquery", "", False, "Query", "", "", "Argument[1]", "xpath-injection", "manual"] - - ["github.com/antchfx/xmlquery", "", False, "QueryAll", "", "", "Argument[1]", "xpath-injection", "manual"] - - ["github.com/antchfx/xmlquery", "Node", True, "SelectElement", "", "", "Argument[0]", "xpath-injection", "manual"] - - ["github.com/antchfx/xmlquery", "Node", True, "SelectElements", "", "", "Argument[0]", "xpath-injection", "manual"] diff --git a/go/ql/lib/ext/github.com.antchfx.xpath.model.json b/go/ql/lib/ext/github.com.antchfx.xpath.model.json new file mode 100644 index 000000000000..c8bfaf2c7647 --- /dev/null +++ b/go/ql/lib/ext/github.com.antchfx.xpath.model.json @@ -0,0 +1,16 @@ +{ + "extensions": [ + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "sinkModel" + }, + "data": [ + ["github.com/antchfx/xpath", "", false, "Compile", "", "", "Argument[0]", "xpath-injection", "manual"], + ["github.com/antchfx/xpath", "", false, "CompileWithNS", "", "", "Argument[0]", "xpath-injection", "manual"], + ["github.com/antchfx/xpath", "", false, "MustCompile", "", "", "Argument[0]", "xpath-injection", "manual"], + ["github.com/antchfx/xpath", "", false, "Select", "", "", "Argument[1]", "xpath-injection", "manual"] + ] + } + ] +} diff --git a/go/ql/lib/ext/github.com.antchfx.xpath.model.yml b/go/ql/lib/ext/github.com.antchfx.xpath.model.yml deleted file mode 100644 index bb087f381adf..000000000000 --- a/go/ql/lib/ext/github.com.antchfx.xpath.model.yml +++ /dev/null @@ -1,9 +0,0 @@ -extensions: - - addsTo: - pack: codeql/go-all - extensible: sinkModel - data: - - ["github.com/antchfx/xpath", "", False, "Compile", "", "", "Argument[0]", "xpath-injection", "manual"] - - ["github.com/antchfx/xpath", "", False, "CompileWithNS", "", "", "Argument[0]", "xpath-injection", "manual"] - - ["github.com/antchfx/xpath", "", False, "MustCompile", "", "", "Argument[0]", "xpath-injection", "manual"] - - ["github.com/antchfx/xpath", "", False, "Select", "", "", "Argument[1]", "xpath-injection", "manual"] diff --git a/go/ql/lib/ext/github.com.appleboy.gin-jwt.model.json b/go/ql/lib/ext/github.com.appleboy.gin-jwt.model.json new file mode 100644 index 000000000000..18a8f799acb7 --- /dev/null +++ b/go/ql/lib/ext/github.com.appleboy.gin-jwt.model.json @@ -0,0 +1,13 @@ +{ + "extensions": [ + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "sinkModel" + }, + "data": [ + ["github.com/appleboy/gin-jwt", "GinJWTMiddleware", true, "Key", "", "", "", "credentials-key", "manual"] + ] + } + ] +} diff --git a/go/ql/lib/ext/github.com.appleboy.gin-jwt.model.yml b/go/ql/lib/ext/github.com.appleboy.gin-jwt.model.yml deleted file mode 100644 index 8911b5d5346c..000000000000 --- a/go/ql/lib/ext/github.com.appleboy.gin-jwt.model.yml +++ /dev/null @@ -1,6 +0,0 @@ -extensions: - - addsTo: - pack: codeql/go-all - extensible: sinkModel - data: - - ["github.com/appleboy/gin-jwt", "GinJWTMiddleware", True, "Key", "", "", "", "credentials-key", "manual"] diff --git a/go/ql/lib/ext/github.com.beego.beego.client.orm.model.json b/go/ql/lib/ext/github.com.beego.beego.client.orm.model.json new file mode 100644 index 000000000000..3bb8b803719a --- /dev/null +++ b/go/ql/lib/ext/github.com.beego.beego.client.orm.model.json @@ -0,0 +1,74 @@ +{ + "extensions": [ + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "packageGrouping" + }, + "data": [ + ["beego-orm", "github.com/beego/beego/client/orm"], + ["beego-orm", "github.com/astaxie/beego/orm"], + ["beego-orm", "github.com/beego/beego/orm"] + ] + }, + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "sourceModel" + }, + "data": [ + ["group:beego-orm", "DB", true, "Query", "", "", "ReturnValue[0]", "database", "manual"], + ["group:beego-orm", "DB", true, "QueryContext", "", "", "ReturnValue[0]", "database", "manual"], + ["group:beego-orm", "DB", true, "QueryRow", "", "", "ReturnValue", "database", "manual"], + ["group:beego-orm", "DB", true, "QueryRowContext", "", "", "ReturnValue", "database", "manual"], + ["group:beego-orm", "DQL", true, "Read", "", "", "Argument[0]", "database", "manual"], + ["group:beego-orm", "DQL", true, "ReadWithCtx", "", "", "Argument[1]", "database", "manual"], + ["group:beego-orm", "DQL", true, "ReadForUpdate", "", "", "Argument[0]", "database", "manual"], + ["group:beego-orm", "DQL", true, "ReadForUpdateWithCtx", "", "", "Argument[1]", "database", "manual"], + ["group:beego-orm", "DQL", true, "ReadOrCreate", "", "", "Argument[0]", "database", "manual"], + ["group:beego-orm", "DQL", true, "ReadOrCreateWithCtx", "", "", "Argument[1]", "database", "manual"], + ["group:beego-orm", "Ormer", true, "Read", "", "", "Argument[0]", "database", "manual"], + ["group:beego-orm", "Ormer", true, "ReadForUpdate", "", "", "Argument[0]", "database", "manual"], + ["group:beego-orm", "Ormer", true, "ReadOrCreate", "", "", "Argument[0]", "database", "manual"] + ] + }, + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "sinkModel" + }, + "data": [ + ["group:beego-orm", "Condition", true, "Raw", "", "", "Argument[1]", "sql-injection", "manual"], + ["group:beego-orm", "DB", true, "Exec", "", "", "Argument[0]", "sql-injection", "manual"], + ["group:beego-orm", "DB", true, "ExecContext", "", "", "Argument[1]", "sql-injection", "manual"], + ["group:beego-orm", "DB", true, "Prepare", "", "", "Argument[0]", "sql-injection", "manual"], + ["group:beego-orm", "DB", true, "PrepareContext", "", "", "Argument[1]", "sql-injection", "manual"], + ["group:beego-orm", "DB", true, "Query", "", "", "Argument[0]", "sql-injection", "manual"], + ["group:beego-orm", "DB", true, "QueryContext", "", "", "Argument[1]", "sql-injection", "manual"], + ["group:beego-orm", "DB", true, "QueryRow", "", "", "Argument[0]", "sql-injection", "manual"], + ["group:beego-orm", "DB", true, "QueryRowContext", "", "", "Argument[1]", "sql-injection", "manual"], + ["group:beego-orm", "Ormer", true, "Raw", "", "", "Argument[0]", "sql-injection", "manual"], + ["group:beego-orm", "QueryBuilder", true, "And", "", "", "Argument[0]", "sql-injection", "manual"], + ["group:beego-orm", "QueryBuilder", true, "Delete", "", "", "Argument[0]", "sql-injection", "manual"], + ["group:beego-orm", "QueryBuilder", true, "From", "", "", "Argument[0]", "sql-injection", "manual"], + ["group:beego-orm", "QueryBuilder", true, "GroupBy", "", "", "Argument[0]", "sql-injection", "manual"], + ["group:beego-orm", "QueryBuilder", true, "Having", "", "", "Argument[0]", "sql-injection", "manual"], + ["group:beego-orm", "QueryBuilder", true, "In", "", "", "Argument[0]", "sql-injection", "manual"], + ["group:beego-orm", "QueryBuilder", true, "InnerJoin", "", "", "Argument[0]", "sql-injection", "manual"], + ["group:beego-orm", "QueryBuilder", true, "InsertInto", "", "", "Argument[0..1]", "sql-injection", "manual"], + ["group:beego-orm", "QueryBuilder", true, "LeftJoin", "", "", "Argument[0]", "sql-injection", "manual"], + ["group:beego-orm", "QueryBuilder", true, "On", "", "", "Argument[0]", "sql-injection", "manual"], + ["group:beego-orm", "QueryBuilder", true, "Or", "", "", "Argument[0]", "sql-injection", "manual"], + ["group:beego-orm", "QueryBuilder", true, "OrderBy", "", "", "Argument[0]", "sql-injection", "manual"], + ["group:beego-orm", "QueryBuilder", true, "RightJoin", "", "", "Argument[0]", "sql-injection", "manual"], + ["group:beego-orm", "QueryBuilder", true, "Select", "", "", "Argument[0]", "sql-injection", "manual"], + ["group:beego-orm", "QueryBuilder", true, "Set", "", "", "Argument[0]", "sql-injection", "manual"], + ["group:beego-orm", "QueryBuilder", true, "Subquery", "", "", "Argument[0..1]", "sql-injection", "manual"], + ["group:beego-orm", "QueryBuilder", true, "Update", "", "", "Argument[0]", "sql-injection", "manual"], + ["group:beego-orm", "QueryBuilder", true, "Values", "", "", "Argument[0]", "sql-injection", "manual"], + ["group:beego-orm", "QueryBuilder", true, "Where", "", "", "Argument[0]", "sql-injection", "manual"], + ["group:beego-orm", "QuerySeter", true, "FilterRaw", "", "", "Argument[1]", "sql-injection", "manual"] + ] + } + ] +} diff --git a/go/ql/lib/ext/github.com.beego.beego.client.orm.model.yml b/go/ql/lib/ext/github.com.beego.beego.client.orm.model.yml deleted file mode 100644 index c629191a3668..000000000000 --- a/go/ql/lib/ext/github.com.beego.beego.client.orm.model.yml +++ /dev/null @@ -1,60 +0,0 @@ -extensions: - - addsTo: - pack: codeql/go-all - extensible: packageGrouping - data: - - ["beego-orm", "github.com/beego/beego/client/orm"] - - ["beego-orm", "github.com/astaxie/beego/orm"] - - ["beego-orm", "github.com/beego/beego/orm"] - - addsTo: - pack: codeql/go-all - extensible: sourceModel - data: - - ["group:beego-orm", "DB", True, "Query", "", "", "ReturnValue[0]", "database", "manual"] - - ["group:beego-orm", "DB", True, "QueryContext", "", "", "ReturnValue[0]", "database", "manual"] - - ["group:beego-orm", "DB", True, "QueryRow", "", "", "ReturnValue", "database", "manual"] - - ["group:beego-orm", "DB", True, "QueryRowContext", "", "", "ReturnValue", "database", "manual"] - - ["group:beego-orm", "DQL", True, "Read", "", "", "Argument[0]", "database", "manual"] - - ["group:beego-orm", "DQL", True, "ReadWithCtx", "", "", "Argument[1]", "database", "manual"] - - ["group:beego-orm", "DQL", True, "ReadForUpdate", "", "", "Argument[0]", "database", "manual"] - - ["group:beego-orm", "DQL", True, "ReadForUpdateWithCtx", "", "", "Argument[1]", "database", "manual"] - - ["group:beego-orm", "DQL", True, "ReadOrCreate", "", "", "Argument[0]", "database", "manual"] - - ["group:beego-orm", "DQL", True, "ReadOrCreateWithCtx", "", "", "Argument[1]", "database", "manual"] - - ["group:beego-orm", "Ormer", True, "Read", "", "", "Argument[0]", "database", "manual"] - - ["group:beego-orm", "Ormer", True, "ReadForUpdate", "", "", "Argument[0]", "database", "manual"] - - ["group:beego-orm", "Ormer", True, "ReadOrCreate", "", "", "Argument[0]", "database", "manual"] - - addsTo: - pack: codeql/go-all - extensible: sinkModel - data: - - ["group:beego-orm", "Condition", True, "Raw", "", "", "Argument[1]", "sql-injection", "manual"] - - ["group:beego-orm", "DB", True, "Exec", "", "", "Argument[0]", "sql-injection", "manual"] - - ["group:beego-orm", "DB", True, "ExecContext", "", "", "Argument[1]", "sql-injection", "manual"] - - ["group:beego-orm", "DB", True, "Prepare", "", "", "Argument[0]", "sql-injection", "manual"] - - ["group:beego-orm", "DB", True, "PrepareContext", "", "", "Argument[1]", "sql-injection", "manual"] - - ["group:beego-orm", "DB", True, "Query", "", "", "Argument[0]", "sql-injection", "manual"] - - ["group:beego-orm", "DB", True, "QueryContext", "", "", "Argument[1]", "sql-injection", "manual"] - - ["group:beego-orm", "DB", True, "QueryRow", "", "", "Argument[0]", "sql-injection", "manual"] - - ["group:beego-orm", "DB", True, "QueryRowContext", "", "", "Argument[1]", "sql-injection", "manual"] - - ["group:beego-orm", "Ormer", True, "Raw", "", "", "Argument[0]", "sql-injection", "manual"] - - ["group:beego-orm", "QueryBuilder", True, "And", "", "", "Argument[0]", "sql-injection", "manual"] - - ["group:beego-orm", "QueryBuilder", True, "Delete", "", "", "Argument[0]", "sql-injection", "manual"] - - ["group:beego-orm", "QueryBuilder", True, "From", "", "", "Argument[0]", "sql-injection", "manual"] - - ["group:beego-orm", "QueryBuilder", True, "GroupBy", "", "", "Argument[0]", "sql-injection", "manual"] - - ["group:beego-orm", "QueryBuilder", True, "Having", "", "", "Argument[0]", "sql-injection", "manual"] - - ["group:beego-orm", "QueryBuilder", True, "In", "", "", "Argument[0]", "sql-injection", "manual"] - - ["group:beego-orm", "QueryBuilder", True, "InnerJoin", "", "", "Argument[0]", "sql-injection", "manual"] - - ["group:beego-orm", "QueryBuilder", True, "InsertInto", "", "", "Argument[0..1]", "sql-injection", "manual"] - - ["group:beego-orm", "QueryBuilder", True, "LeftJoin", "", "", "Argument[0]", "sql-injection", "manual"] - - ["group:beego-orm", "QueryBuilder", True, "On", "", "", "Argument[0]", "sql-injection", "manual"] - - ["group:beego-orm", "QueryBuilder", True, "Or", "", "", "Argument[0]", "sql-injection", "manual"] - - ["group:beego-orm", "QueryBuilder", True, "OrderBy", "", "", "Argument[0]", "sql-injection", "manual"] - - ["group:beego-orm", "QueryBuilder", True, "RightJoin", "", "", "Argument[0]", "sql-injection", "manual"] - - ["group:beego-orm", "QueryBuilder", True, "Select", "", "", "Argument[0]", "sql-injection", "manual"] - - ["group:beego-orm", "QueryBuilder", True, "Set", "", "", "Argument[0]", "sql-injection", "manual"] - - ["group:beego-orm", "QueryBuilder", True, "Subquery", "", "", "Argument[0..1]", "sql-injection", "manual"] - - ["group:beego-orm", "QueryBuilder", True, "Update", "", "", "Argument[0]", "sql-injection", "manual"] - - ["group:beego-orm", "QueryBuilder", True, "Values", "", "", "Argument[0]", "sql-injection", "manual"] - - ["group:beego-orm", "QueryBuilder", True, "Where", "", "", "Argument[0]", "sql-injection", "manual"] - - ["group:beego-orm", "QuerySeter", True, "FilterRaw", "", "", "Argument[1]", "sql-injection", "manual"] - diff --git a/go/ql/lib/ext/github.com.beego.beego.core.logs.model.json b/go/ql/lib/ext/github.com.beego.beego.core.logs.model.json new file mode 100644 index 000000000000..e7cf36b70f1d --- /dev/null +++ b/go/ql/lib/ext/github.com.beego.beego.core.logs.model.json @@ -0,0 +1,45 @@ +{ + "extensions": [ + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "packageGrouping" + }, + "data": [ + ["beego-logs", "github.com/astaxie/beego/logs"], + ["beego-logs", "github.com/beego/beego/logs"], + ["beego-logs", "github.com/beego/beego/core/logs"] + ] + }, + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "sinkModel" + }, + "data": [ + ["group:beego-logs", "", false, "Alert", "", "", "Argument[0..1]", "log-injection", "manual"], + ["group:beego-logs", "", false, "Critical", "", "", "Argument[0..1]", "log-injection", "manual"], + ["group:beego-logs", "", false, "Debug", "", "", "Argument[0..1]", "log-injection", "manual"], + ["group:beego-logs", "", false, "Emergency", "", "", "Argument[0..1]", "log-injection", "manual"], + ["group:beego-logs", "", false, "Error", "", "", "Argument[0..1]", "log-injection", "manual"], + ["group:beego-logs", "", false, "Info", "", "", "Argument[0..1]", "log-injection", "manual"], + ["group:beego-logs", "", false, "Informational", "", "", "Argument[0..1]", "log-injection", "manual"], + ["group:beego-logs", "", false, "Notice", "", "", "Argument[0..1]", "log-injection", "manual"], + ["group:beego-logs", "", false, "Trace", "", "", "Argument[0..1]", "log-injection", "manual"], + ["group:beego-logs", "", false, "Warn", "", "", "Argument[0..1]", "log-injection", "manual"], + ["group:beego-logs", "", false, "Warning", "", "", "Argument[0..1]", "log-injection", "manual"], + ["group:beego-logs", "BeeLogger", true, "Alert", "", "", "Argument[0..1]", "log-injection", "manual"], + ["group:beego-logs", "BeeLogger", true, "Critical", "", "", "Argument[0..1]", "log-injection", "manual"], + ["group:beego-logs", "BeeLogger", true, "Debug", "", "", "Argument[0..1]", "log-injection", "manual"], + ["group:beego-logs", "BeeLogger", true, "Emergency", "", "", "Argument[0..1]", "log-injection", "manual"], + ["group:beego-logs", "BeeLogger", true, "Error", "", "", "Argument[0..1]", "log-injection", "manual"], + ["group:beego-logs", "BeeLogger", true, "Info", "", "", "Argument[0..1]", "log-injection", "manual"], + ["group:beego-logs", "BeeLogger", true, "Informational", "", "", "Argument[0..1]", "log-injection", "manual"], + ["group:beego-logs", "BeeLogger", true, "Notice", "", "", "Argument[0..1]", "log-injection", "manual"], + ["group:beego-logs", "BeeLogger", true, "Trace", "", "", "Argument[0..1]", "log-injection", "manual"], + ["group:beego-logs", "BeeLogger", true, "Warn", "", "", "Argument[0..1]", "log-injection", "manual"], + ["group:beego-logs", "BeeLogger", true, "Warning", "", "", "Argument[0..1]", "log-injection", "manual"] + ] + } + ] +} diff --git a/go/ql/lib/ext/github.com.beego.beego.core.logs.model.yml b/go/ql/lib/ext/github.com.beego.beego.core.logs.model.yml deleted file mode 100644 index b55c3be507dd..000000000000 --- a/go/ql/lib/ext/github.com.beego.beego.core.logs.model.yml +++ /dev/null @@ -1,34 +0,0 @@ -extensions: - - addsTo: - pack: codeql/go-all - extensible: packageGrouping - data: - - ["beego-logs", "github.com/astaxie/beego/logs"] - - ["beego-logs", "github.com/beego/beego/logs"] - - ["beego-logs", "github.com/beego/beego/core/logs"] - - addsTo: - pack: codeql/go-all - extensible: sinkModel - data: - - ["group:beego-logs", "", False, "Alert", "", "", "Argument[0..1]", "log-injection", "manual"] - - ["group:beego-logs", "", False, "Critical", "", "", "Argument[0..1]", "log-injection", "manual"] - - ["group:beego-logs", "", False, "Debug", "", "", "Argument[0..1]", "log-injection", "manual"] - - ["group:beego-logs", "", False, "Emergency", "", "", "Argument[0..1]", "log-injection", "manual"] - - ["group:beego-logs", "", False, "Error", "", "", "Argument[0..1]", "log-injection", "manual"] - - ["group:beego-logs", "", False, "Info", "", "", "Argument[0..1]", "log-injection", "manual"] - - ["group:beego-logs", "", False, "Informational", "", "", "Argument[0..1]", "log-injection", "manual"] - - ["group:beego-logs", "", False, "Notice", "", "", "Argument[0..1]", "log-injection", "manual"] - - ["group:beego-logs", "", False, "Trace", "", "", "Argument[0..1]", "log-injection", "manual"] - - ["group:beego-logs", "", False, "Warn", "", "", "Argument[0..1]", "log-injection", "manual"] - - ["group:beego-logs", "", False, "Warning", "", "", "Argument[0..1]", "log-injection", "manual"] - - ["group:beego-logs", "BeeLogger", True, "Alert", "", "", "Argument[0..1]", "log-injection", "manual"] - - ["group:beego-logs", "BeeLogger", True, "Critical", "", "", "Argument[0..1]", "log-injection", "manual"] - - ["group:beego-logs", "BeeLogger", True, "Debug", "", "", "Argument[0..1]", "log-injection", "manual"] - - ["group:beego-logs", "BeeLogger", True, "Emergency", "", "", "Argument[0..1]", "log-injection", "manual"] - - ["group:beego-logs", "BeeLogger", True, "Error", "", "", "Argument[0..1]", "log-injection", "manual"] - - ["group:beego-logs", "BeeLogger", True, "Info", "", "", "Argument[0..1]", "log-injection", "manual"] - - ["group:beego-logs", "BeeLogger", True, "Informational", "", "", "Argument[0..1]", "log-injection", "manual"] - - ["group:beego-logs", "BeeLogger", True, "Notice", "", "", "Argument[0..1]", "log-injection", "manual"] - - ["group:beego-logs", "BeeLogger", True, "Trace", "", "", "Argument[0..1]", "log-injection", "manual"] - - ["group:beego-logs", "BeeLogger", True, "Warn", "", "", "Argument[0..1]", "log-injection", "manual"] - - ["group:beego-logs", "BeeLogger", True, "Warning", "", "", "Argument[0..1]", "log-injection", "manual"] diff --git a/go/ql/lib/ext/github.com.beego.beego.core.utils.model.json b/go/ql/lib/ext/github.com.beego.beego.core.utils.model.json new file mode 100644 index 000000000000..96f811ae840a --- /dev/null +++ b/go/ql/lib/ext/github.com.beego.beego.core.utils.model.json @@ -0,0 +1,45 @@ +{ + "extensions": [ + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "packageGrouping" + }, + "data": [ + ["beego-utils", "github.com/astaxie/beego/utils"], + ["beego-utils", "github.com/beego/beego/utils"], + ["beego-utils", "github.com/beego/beego/core/utils"] + ] + }, + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "sinkModel" + }, + "data": [ + ["group:beego-utils", "", false, "Display", "", "", "Argument[0]", "log-injection", "manual"] + ] + }, + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "summaryModel" + }, + "data": [ + ["group:beego-utils", "", false, "SliceChunk", "", "", "Argument[0]", "ReturnValue", "taint", "manual"], + ["group:beego-utils", "", false, "SliceDiff", "", "", "Argument[0]", "ReturnValue", "taint", "manual"], + ["group:beego-utils", "", false, "SliceFilter", "", "", "Argument[0]", "ReturnValue", "taint", "manual"], + ["group:beego-utils", "", false, "SliceIntersect", "", "", "Argument[0..1]", "ReturnValue", "taint", "manual"], + ["group:beego-utils", "", false, "SliceMerge", "", "", "Argument[0..1]", "ReturnValue", "taint", "manual"], + ["group:beego-utils", "", false, "SlicePad", "", "", "Argument[0..2]", "ReturnValue", "taint", "manual"], + ["group:beego-utils", "", false, "SliceRand", "", "", "Argument[0]", "ReturnValue", "taint", "manual"], + ["group:beego-utils", "", false, "SliceReduce", "", "", "Argument[0]", "ReturnValue", "taint", "manual"], + ["group:beego-utils", "", false, "SliceShuffle", "", "", "Argument[0]", "ReturnValue", "taint", "manual"], + ["group:beego-utils", "", false, "SliceUnique", "", "", "Argument[0]", "ReturnValue", "taint", "manual"], + ["group:beego-utils", "BeeMap", true, "Get", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"], + ["group:beego-utils", "BeeMap", true, "Items", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"], + ["group:beego-utils", "BeeMap", true, "Set", "", "", "Argument[1]", "Argument[receiver]", "taint", "manual"] + ] + } + ] +} diff --git a/go/ql/lib/ext/github.com.beego.beego.core.utils.model.yml b/go/ql/lib/ext/github.com.beego.beego.core.utils.model.yml deleted file mode 100644 index 63c05b920401..000000000000 --- a/go/ql/lib/ext/github.com.beego.beego.core.utils.model.yml +++ /dev/null @@ -1,30 +0,0 @@ -extensions: - - addsTo: - pack: codeql/go-all - extensible: packageGrouping - data: - - ["beego-utils", "github.com/astaxie/beego/utils"] - - ["beego-utils", "github.com/beego/beego/utils"] - - ["beego-utils", "github.com/beego/beego/core/utils"] - - addsTo: - pack: codeql/go-all - extensible: sinkModel - data: - - ["group:beego-utils", "", False, "Display", "", "", "Argument[0]", "log-injection", "manual"] - - addsTo: - pack: codeql/go-all - extensible: summaryModel - data: - - ["group:beego-utils", "", False, "SliceChunk", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] - - ["group:beego-utils", "", False, "SliceDiff", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] - - ["group:beego-utils", "", False, "SliceFilter", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] - - ["group:beego-utils", "", False, "SliceIntersect", "", "", "Argument[0..1]", "ReturnValue", "taint", "manual"] - - ["group:beego-utils", "", False, "SliceMerge", "", "", "Argument[0..1]", "ReturnValue", "taint", "manual"] - - ["group:beego-utils", "", False, "SlicePad", "", "", "Argument[0..2]", "ReturnValue", "taint", "manual"] - - ["group:beego-utils", "", False, "SliceRand", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] - - ["group:beego-utils", "", False, "SliceReduce", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] - - ["group:beego-utils", "", False, "SliceShuffle", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] - - ["group:beego-utils", "", False, "SliceUnique", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] - - ["group:beego-utils", "BeeMap", True, "Get", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] - - ["group:beego-utils", "BeeMap", True, "Items", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] - - ["group:beego-utils", "BeeMap", True, "Set", "", "", "Argument[1]", "Argument[receiver]", "taint", "manual"] diff --git a/go/ql/lib/ext/github.com.beego.beego.server.web.context.model.json b/go/ql/lib/ext/github.com.beego.beego.server.web.context.model.json new file mode 100644 index 000000000000..3a468fb11f43 --- /dev/null +++ b/go/ql/lib/ext/github.com.beego.beego.server.web.context.model.json @@ -0,0 +1,59 @@ +{ + "extensions": [ + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "packageGrouping" + }, + "data": [ + ["beego-context", "github.com/astaxie/beego/context"], + ["beego-context", "github.com/beego/beego/context"], + ["beego-context", "github.com/beego/beego/server/web/context"] + ] + }, + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "sinkModel" + }, + "data": [ + // path-injection + ["group:beego-context", "BeegoOutput", true, "Download", "", "", "Argument[0]", "path-injection", "manual"], + // url-redirection + ["group:beego-context", "Context", true, "Redirect", "", "", "Argument[1]", "url-redirection", "manual"] + ] + }, + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "summaryModel" + }, + "data": [ + ["group:beego-context", "", false, "WriteBody", "", "", "Argument[2]", "Argument[1]", "taint", "manual"] + ] + }, + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "sourceModel" + }, + "data": [ + ["group:beego-context", "BeegoInput", true, "Bind", "", "", "Argument[0]", "remote", "manual"], + ["group:beego-context", "BeegoInput", true, "Cookie", "", "", "ReturnValue[0]", "remote", "manual"], + ["group:beego-context", "BeegoInput", true, "Data", "", "", "ReturnValue[0]", "remote", "manual"], + ["group:beego-context", "BeegoInput", true, "GetData", "", "", "ReturnValue[0]", "remote", "manual"], + ["group:beego-context", "BeegoInput", true, "Header", "", "", "ReturnValue[0]", "remote", "manual"], + ["group:beego-context", "BeegoInput", true, "Param", "", "", "ReturnValue[0]", "remote", "manual"], + ["group:beego-context", "BeegoInput", true, "Params", "", "", "ReturnValue[0]", "remote", "manual"], + ["group:beego-context", "BeegoInput", true, "Query", "", "", "ReturnValue[0]", "remote", "manual"], + ["group:beego-context", "BeegoInput", true, "Refer", "", "", "ReturnValue[0]", "remote", "manual"], + ["group:beego-context", "BeegoInput", true, "Referer", "", "", "ReturnValue[0]", "remote", "manual"], + ["group:beego-context", "BeegoInput", true, "RequestBody", "", "", "", "remote", "manual"], + ["group:beego-context", "BeegoInput", true, "URI", "", "", "ReturnValue[0]", "remote", "manual"], + ["group:beego-context", "BeegoInput", true, "URL", "", "", "ReturnValue[0]", "remote", "manual"], + ["group:beego-context", "BeegoInput", true, "UserAgent", "", "", "ReturnValue[0]", "remote", "manual"], + ["group:beego-context", "Context", true, "GetCookie", "", "", "ReturnValue", "remote", "manual"] + ] + } + ] +} diff --git a/go/ql/lib/ext/github.com.beego.beego.server.web.context.model.yml b/go/ql/lib/ext/github.com.beego.beego.server.web.context.model.yml deleted file mode 100644 index da59cc203df1..000000000000 --- a/go/ql/lib/ext/github.com.beego.beego.server.web.context.model.yml +++ /dev/null @@ -1,40 +0,0 @@ -extensions: - - addsTo: - pack: codeql/go-all - extensible: packageGrouping - data: - - ["beego-context", "github.com/astaxie/beego/context"] - - ["beego-context", "github.com/beego/beego/context"] - - ["beego-context", "github.com/beego/beego/server/web/context"] - - addsTo: - pack: codeql/go-all - extensible: sinkModel - data: - # path-injection - - ["group:beego-context", "BeegoOutput", True, "Download", "", "", "Argument[0]", "path-injection", "manual"] - # url-redirection - - ["group:beego-context", "Context", True, "Redirect", "", "", "Argument[1]", "url-redirection", "manual"] - - addsTo: - pack: codeql/go-all - extensible: summaryModel - data: - - ["group:beego-context", "", False, "WriteBody", "", "", "Argument[2]", "Argument[1]", "taint", "manual"] - - addsTo: - pack: codeql/go-all - extensible: sourceModel - data: - - ["group:beego-context", "BeegoInput", True, "Bind", "", "", "Argument[0]", "remote", "manual"] - - ["group:beego-context", "BeegoInput", True, "Cookie", "", "", "ReturnValue[0]", "remote", "manual"] - - ["group:beego-context", "BeegoInput", True, "Data", "", "", "ReturnValue[0]", "remote", "manual"] - - ["group:beego-context", "BeegoInput", True, "GetData", "", "", "ReturnValue[0]", "remote", "manual"] - - ["group:beego-context", "BeegoInput", True, "Header", "", "", "ReturnValue[0]", "remote", "manual"] - - ["group:beego-context", "BeegoInput", True, "Param", "", "", "ReturnValue[0]", "remote", "manual"] - - ["group:beego-context", "BeegoInput", True, "Params", "", "", "ReturnValue[0]", "remote", "manual"] - - ["group:beego-context", "BeegoInput", True, "Query", "", "", "ReturnValue[0]", "remote", "manual"] - - ["group:beego-context", "BeegoInput", True, "Refer", "", "", "ReturnValue[0]", "remote", "manual"] - - ["group:beego-context", "BeegoInput", True, "Referer", "", "", "ReturnValue[0]", "remote", "manual"] - - ["group:beego-context", "BeegoInput", True, "RequestBody", "", "", "", "remote", "manual"] - - ["group:beego-context", "BeegoInput", True, "URI", "", "", "ReturnValue[0]", "remote", "manual"] - - ["group:beego-context", "BeegoInput", True, "URL", "", "", "ReturnValue[0]", "remote", "manual"] - - ["group:beego-context", "BeegoInput", True, "UserAgent", "", "", "ReturnValue[0]", "remote", "manual"] - - ["group:beego-context", "Context", True, "GetCookie", "", "", "ReturnValue", "remote", "manual"] diff --git a/go/ql/lib/ext/github.com.beego.beego.server.web.model.json b/go/ql/lib/ext/github.com.beego.beego.server.web.model.json new file mode 100644 index 000000000000..8be97d49734e --- /dev/null +++ b/go/ql/lib/ext/github.com.beego.beego.server.web.model.json @@ -0,0 +1,80 @@ +{ + "extensions": [ + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "packageGrouping" + }, + "data": [ + ["beego", "github.com/astaxie/beego"], + ["beego", "github.com/beego/beego"], + ["beego", "github.com/beego/beego/server/web"] + ] + }, + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "sinkModel" + }, + "data": [ + // log-injection + ["group:beego", "", false, "Alert", "", "", "Argument[0..1]", "log-injection", "manual"], + ["group:beego", "", false, "Critical", "", "", "Argument[0..1]", "log-injection", "manual"], + ["group:beego", "", false, "Debug", "", "", "Argument[0..1]", "log-injection", "manual"], + ["group:beego", "", false, "Emergency", "", "", "Argument[0..1]", "log-injection", "manual"], + ["group:beego", "", false, "Error", "", "", "Argument[0..1]", "log-injection", "manual"], + ["group:beego", "", false, "Info", "", "", "Argument[0..1]", "log-injection", "manual"], + ["group:beego", "", false, "Informational", "", "", "Argument[0..1]", "log-injection", "manual"], + ["group:beego", "", false, "Notice", "", "", "Argument[0..1]", "log-injection", "manual"], + ["group:beego", "", false, "Trace", "", "", "Argument[0..1]", "log-injection", "manual"], + ["group:beego", "", false, "Warn", "", "", "Argument[0..1]", "log-injection", "manual"], + ["group:beego", "", false, "Warning", "", "", "Argument[0..1]", "log-injection", "manual"], + // path-injection + ["group:beego", "", false, "Walk", "", "", "Argument[1]", "path-injection", "manual"], + ["group:beego", "Controller", true, "SaveToFile", "", "", "Argument[1]", "path-injection", "manual"], + ["group:beego", "Controller", true, "SaveToFileWithBuffer", "", "", "Argument[1]", "path-injection", "manual"], // only exists in v2 + ["group:beego", "FileSystem", true, "Open", "", "", "Argument[0]", "path-injection", "manual"], + // url-redirection + ["group:beego", "Controller", true, "Redirect", "", "", "Argument[0]", "url-redirection", "manual"] + ] + }, + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "summaryModel" + }, + "data": [ + ["group:beego", "", false, "HTML2str", "", "", "Argument[0]", "ReturnValue", "taint", "manual"], + ["group:beego", "", false, "Htmlquote", "", "", "Argument[0]", "ReturnValue", "taint", "manual"], + ["group:beego", "", false, "Htmlunquote", "", "", "Argument[0]", "ReturnValue", "taint", "manual"], + ["group:beego", "", false, "MapGet", "", "", "Argument[0]", "ReturnValue[0]", "taint", "manual"], + ["group:beego", "", false, "ParseForm", "", "", "Argument[0]", "Argument[1]", "taint", "manual"], + ["group:beego", "", false, "Str2html", "", "", "Argument[0]", "ReturnValue", "taint", "manual"], + ["group:beego", "", false, "Substr", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] + ] + }, + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "sourceModel" + }, + "data": [ + ["group:beego", "Controller", true, "ParseForm", "", "", "Argument[0]", "remote", "manual"], + ["group:beego", "Controller", true, "GetFile", "", "", "ReturnValue[0..1]", "remote", "manual"], + ["group:beego", "Controller", true, "GetFiles", "", "", "ReturnValue[0]", "remote", "manual"], + ["group:beego", "Controller", true, "GetString", "", "", "ReturnValue[0]", "remote", "manual"], + ["group:beego", "Controller", true, "GetStrings", "", "", "ReturnValue[0]", "remote", "manual"], + ["group:beego", "Controller", true, "Input", "", "", "ReturnValue[0]", "remote", "manual"] + ] + }, + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "barrierModel" + }, + "data": [ + ["group:beego", "", true, "Htmlquote", "", "", "ReturnValue", "html-injection", "manual"] + ] + } + ] +} diff --git a/go/ql/lib/ext/github.com.beego.beego.server.web.model.yml b/go/ql/lib/ext/github.com.beego.beego.server.web.model.yml deleted file mode 100644 index 8588af2652c9..000000000000 --- a/go/ql/lib/ext/github.com.beego.beego.server.web.model.yml +++ /dev/null @@ -1,57 +0,0 @@ -extensions: - - addsTo: - pack: codeql/go-all - extensible: packageGrouping - data: - - ["beego", "github.com/astaxie/beego"] - - ["beego", "github.com/beego/beego"] - - ["beego", "github.com/beego/beego/server/web"] - - addsTo: - pack: codeql/go-all - extensible: sinkModel - data: - # log-injection - - ["group:beego", "", False, "Alert", "", "", "Argument[0..1]", "log-injection", "manual"] - - ["group:beego", "", False, "Critical", "", "", "Argument[0..1]", "log-injection", "manual"] - - ["group:beego", "", False, "Debug", "", "", "Argument[0..1]", "log-injection", "manual"] - - ["group:beego", "", False, "Emergency", "", "", "Argument[0..1]", "log-injection", "manual"] - - ["group:beego", "", False, "Error", "", "", "Argument[0..1]", "log-injection", "manual"] - - ["group:beego", "", False, "Info", "", "", "Argument[0..1]", "log-injection", "manual"] - - ["group:beego", "", False, "Informational", "", "", "Argument[0..1]", "log-injection", "manual"] - - ["group:beego", "", False, "Notice", "", "", "Argument[0..1]", "log-injection", "manual"] - - ["group:beego", "", False, "Trace", "", "", "Argument[0..1]", "log-injection", "manual"] - - ["group:beego", "", False, "Warn", "", "", "Argument[0..1]", "log-injection", "manual"] - - ["group:beego", "", False, "Warning", "", "", "Argument[0..1]", "log-injection", "manual"] - # path-injection - - ["group:beego", "", False, "Walk", "", "", "Argument[1]", "path-injection", "manual"] - - ["group:beego", "Controller", True, "SaveToFile", "", "", "Argument[1]", "path-injection", "manual"] - - ["group:beego", "Controller", True, "SaveToFileWithBuffer", "", "", "Argument[1]", "path-injection", "manual"] # only exists in v2 - - ["group:beego", "FileSystem", True, "Open", "", "", "Argument[0]", "path-injection", "manual"] - # url-redirection - - ["group:beego", "Controller", True, "Redirect", "", "", "Argument[0]", "url-redirection", "manual"] - - addsTo: - pack: codeql/go-all - extensible: summaryModel - data: - - ["group:beego", "", False, "HTML2str", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] - - ["group:beego", "", False, "Htmlquote", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] - - ["group:beego", "", False, "Htmlunquote", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] - - ["group:beego", "", False, "MapGet", "", "", "Argument[0]", "ReturnValue[0]", "taint", "manual"] - - ["group:beego", "", False, "ParseForm", "", "", "Argument[0]", "Argument[1]", "taint", "manual"] - - ["group:beego", "", False, "Str2html", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] - - ["group:beego", "", False, "Substr", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] - - addsTo: - pack: codeql/go-all - extensible: sourceModel - data: - - ["group:beego", "Controller", True, "ParseForm", "", "", "Argument[0]", "remote", "manual"] - - ["group:beego", "Controller", True, "GetFile", "", "", "ReturnValue[0..1]", "remote", "manual"] - - ["group:beego", "Controller", True, "GetFiles", "", "", "ReturnValue[0]", "remote", "manual"] - - ["group:beego", "Controller", True, "GetString", "", "", "ReturnValue[0]", "remote", "manual"] - - ["group:beego", "Controller", True, "GetStrings", "", "", "ReturnValue[0]", "remote", "manual"] - - ["group:beego", "Controller", True, "Input", "", "", "ReturnValue[0]", "remote", "manual"] - - addsTo: - pack: codeql/go-all - extensible: barrierModel - data: - - ["group:beego", "", True, "Htmlquote", "", "", "ReturnValue", "html-injection", "manual"] diff --git a/go/ql/lib/ext/github.com.caarlos0.env.model.json b/go/ql/lib/ext/github.com.caarlos0.env.model.json new file mode 100644 index 000000000000..f9f4e19e64f9 --- /dev/null +++ b/go/ql/lib/ext/github.com.caarlos0.env.model.json @@ -0,0 +1,27 @@ +{ + "extensions": [ + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "sourceModel" + }, + "data": [ + ["github.com/caarlos0/env", "", false, "Parse", "", "", "Argument[0]", "environment", "manual"], + ["github.com/caarlos0/env", "", false, "ParseAs", "", "", "ReturnValue[0]", "environment", "manual"], + ["github.com/caarlos0/env", "", false, "ParseAsWithOptions", "", "", "ReturnValue[0]", "environment", "manual"], + ["github.com/caarlos0/env", "", false, "ParseWithFuncs", "", "", "Argument[0]", "environment", "manual"], + ["github.com/caarlos0/env", "", false, "ParseWithOptions", "", "", "Argument[0]", "environment", "manual"] + ] + }, + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "summaryModel" + }, + "data": [ + ["github.com/caarlos0/env", "", false, "Must", "", "", "Argument[0]", "ReturnValue", "value", "manual"], + ["github.com/caarlos0/env", "", false, "ToMap", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] + ] + } + ] +} diff --git a/go/ql/lib/ext/github.com.caarlos0.env.model.yml b/go/ql/lib/ext/github.com.caarlos0.env.model.yml deleted file mode 100644 index 42f6380c3fa9..000000000000 --- a/go/ql/lib/ext/github.com.caarlos0.env.model.yml +++ /dev/null @@ -1,16 +0,0 @@ -extensions: - - addsTo: - pack: codeql/go-all - extensible: sourceModel - data: - - ["github.com/caarlos0/env", "", False, "Parse", "", "", "Argument[0]", "environment", "manual"] - - ["github.com/caarlos0/env", "", False, "ParseAs", "", "", "ReturnValue[0]", "environment", "manual"] - - ["github.com/caarlos0/env", "", False, "ParseAsWithOptions", "", "", "ReturnValue[0]", "environment", "manual"] - - ["github.com/caarlos0/env", "", False, "ParseWithFuncs", "", "", "Argument[0]", "environment", "manual"] - - ["github.com/caarlos0/env", "", False, "ParseWithOptions", "", "", "Argument[0]", "environment", "manual"] - - addsTo: - pack: codeql/go-all - extensible: summaryModel - data: - - ["github.com/caarlos0/env", "", False, "Must", "", "", "Argument[0]", "ReturnValue", "value", "manual"] - - ["github.com/caarlos0/env", "", False, "ToMap", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] diff --git a/go/ql/lib/ext/github.com.christrenkamp.goxpath.model.json b/go/ql/lib/ext/github.com.christrenkamp.goxpath.model.json new file mode 100644 index 000000000000..eda98b3d8321 --- /dev/null +++ b/go/ql/lib/ext/github.com.christrenkamp.goxpath.model.json @@ -0,0 +1,15 @@ +{ + "extensions": [ + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "sinkModel" + }, + "data": [ + ["github.com/ChrisTrenkamp/goxpath", "", false, "MustParse", "", "", "Argument[0]", "xpath-injection", "manual"], + ["github.com/ChrisTrenkamp/goxpath", "", false, "Parse", "", "", "Argument[0]", "xpath-injection", "manual"], + ["github.com/ChrisTrenkamp/goxpath", "", false, "ParseExec", "", "", "Argument[0]", "xpath-injection", "manual"] + ] + } + ] +} diff --git a/go/ql/lib/ext/github.com.christrenkamp.goxpath.model.yml b/go/ql/lib/ext/github.com.christrenkamp.goxpath.model.yml deleted file mode 100644 index f5a4aeefb136..000000000000 --- a/go/ql/lib/ext/github.com.christrenkamp.goxpath.model.yml +++ /dev/null @@ -1,8 +0,0 @@ -extensions: - - addsTo: - pack: codeql/go-all - extensible: sinkModel - data: - - ["github.com/ChrisTrenkamp/goxpath", "", False, "MustParse", "", "", "Argument[0]", "xpath-injection", "manual"] - - ["github.com/ChrisTrenkamp/goxpath", "", False, "Parse", "", "", "Argument[0]", "xpath-injection", "manual"] - - ["github.com/ChrisTrenkamp/goxpath", "", False, "ParseExec", "", "", "Argument[0]", "xpath-injection", "manual"] diff --git a/go/ql/lib/ext/github.com.coder.websocket.model.json b/go/ql/lib/ext/github.com.coder.websocket.model.json new file mode 100644 index 000000000000..e2aa753bb656 --- /dev/null +++ b/go/ql/lib/ext/github.com.coder.websocket.model.json @@ -0,0 +1,24 @@ +{ + "extensions": [ + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "packageGrouping" + }, + "data": [ + ["coder/websocket", "github.com/coder/websocket"], + ["coder/websocket", "nhooyr.io/websocket"] + ] + }, + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "sourceModel" + }, + "data": [ + ["group:coder/websocket", "Conn", true, "Read", "", "", "ReturnValue[1]", "remote", "manual"], + ["group:coder/websocket", "Conn", true, "Reader", "", "", "ReturnValue[1]", "remote", "manual"] + ] + } + ] +} diff --git a/go/ql/lib/ext/github.com.coder.websocket.model.yml b/go/ql/lib/ext/github.com.coder.websocket.model.yml deleted file mode 100644 index cf94840ea910..000000000000 --- a/go/ql/lib/ext/github.com.coder.websocket.model.yml +++ /dev/null @@ -1,13 +0,0 @@ -extensions: - - addsTo: - pack: codeql/go-all - extensible: packageGrouping - data: - - ["coder/websocket", "github.com/coder/websocket"] - - ["coder/websocket", "nhooyr.io/websocket"] - - addsTo: - pack: codeql/go-all - extensible: sourceModel - data: - - ["group:coder/websocket", "Conn", True, "Read", "", "", "ReturnValue[1]", "remote", "manual"] - - ["group:coder/websocket", "Conn", True, "Reader", "", "", "ReturnValue[1]", "remote", "manual"] diff --git a/go/ql/lib/ext/github.com.codeskyblue.go-sh.model.json b/go/ql/lib/ext/github.com.codeskyblue.go-sh.model.json new file mode 100644 index 000000000000..37e2090236db --- /dev/null +++ b/go/ql/lib/ext/github.com.codeskyblue.go-sh.model.json @@ -0,0 +1,16 @@ +{ + "extensions": [ + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "sinkModel" + }, + "data": [ + ["github.com/codeskyblue/go-sh", "", false, "Command", "", "", "Argument[0]", "command-injection", "manual"], + ["github.com/codeskyblue/go-sh", "Session", true, "Call", "", "", "Argument[0]", "command-injection", "manual"], + ["github.com/codeskyblue/go-sh", "Session", true, "Command", "", "", "Argument[0]", "command-injection", "manual"], + ["github.com/codeskyblue/go-sh", "Session", true, "Exec", "", "", "Argument[0]", "command-injection", "manual"] + ] + } + ] +} diff --git a/go/ql/lib/ext/github.com.codeskyblue.go-sh.model.yml b/go/ql/lib/ext/github.com.codeskyblue.go-sh.model.yml deleted file mode 100644 index fab0d5915ae0..000000000000 --- a/go/ql/lib/ext/github.com.codeskyblue.go-sh.model.yml +++ /dev/null @@ -1,9 +0,0 @@ -extensions: - - addsTo: - pack: codeql/go-all - extensible: sinkModel - data: - - ["github.com/codeskyblue/go-sh", "", False, "Command", "", "", "Argument[0]", "command-injection", "manual"] - - ["github.com/codeskyblue/go-sh", "Session", True, "Call", "", "", "Argument[0]", "command-injection", "manual"] - - ["github.com/codeskyblue/go-sh", "Session", True, "Command", "", "", "Argument[0]", "command-injection", "manual"] - - ["github.com/codeskyblue/go-sh", "Session", True, "Exec", "", "", "Argument[0]", "command-injection", "manual"] diff --git a/go/ql/lib/ext/github.com.couchbase.gocb.model.json b/go/ql/lib/ext/github.com.couchbase.gocb.model.json new file mode 100644 index 000000000000..44629b6a48a2 --- /dev/null +++ b/go/ql/lib/ext/github.com.couchbase.gocb.model.json @@ -0,0 +1,120 @@ +{ + "extensions": [ + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "packageGrouping" + }, + "data": [ + ["gocb1", "fixed-version:github.com/couchbase/gocb"], + ["gocb1", "fixed-version:gopkg.in/couchbase/gocb.v1"], + ["gocb1", "fixed-version:github.com/couchbaselabs/gocb"], + ["gocb2", "github.com/couchbase/gocb/v2"], + ["gocb2", "gopkg.in/couchbase/gocb.v2"], + ["gocb2", "github.com/couchbaselabs/gocb/v2"] + ] + }, + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "sourceModel" + }, + "data": [ + ["group:gocb1", "Cluster", true, "ExecuteAnalyticsQuery", "", "", "ReturnValue[0]", "database", "manual"], + ["group:gocb1", "Cluster", true, "ExecuteN1qlQuery", "", "", "ReturnValue[0]", "database", "manual"], + ["group:gocb1", "Cluster", true, "ExecuteSearchQuery", "", "", "ReturnValue[0]", "database", "manual"], + ["group:gocb2", "Cluster", true, "AnalyticsQuery", "", "", "ReturnValue[0]", "database", "manual"], + ["group:gocb2", "Cluster", true, "Query", "", "", "ReturnValue[0]", "database", "manual"], + ["group:gocb2", "Collection", true, "Get", "", "", "ReturnValue[0]", "database", "manual"], + ["group:gocb2", "Collection", true, "GetAndLock", "", "", "ReturnValue[0]", "database", "manual"], + ["group:gocb2", "Collection", true, "GetAndTouch", "", "", "ReturnValue[0]", "database", "manual"], + ["group:gocb2", "Collection", true, "GetAnyReplica", "", "", "ReturnValue[0]", "database", "manual"], + ["group:gocb2", "Collection", true, "LookupIn", "", "", "ReturnValue[0]", "database", "manual"], + ["group:gocb2", "Collection", true, "LookupInAllReplicas", "", "", "ReturnValue[0]", "database", "manual"], + ["group:gocb2", "Collection", true, "LookupInAnyReplica", "", "", "ReturnValue[0]", "database", "manual"], + ["group:gocb2", "Collection", true, "Scan", "", "", "ReturnValue[0]", "database", "manual"], + ["group:gocb2", "Scope", true, "AnalyticsQuery", "", "", "ReturnValue[0]", "database", "manual"], + ["group:gocb2", "Scope", true, "Query", "", "", "ReturnValue[0]", "database", "manual"], + ["group:gocb2", "TransactionAttemptContext", true, "Get", "", "", "ReturnValue[0]", "database", "manual"], + ["group:gocb2", "TransactionAttemptContext", true, "GetReplicaFromPreferredServerGroup", "", "", "ReturnValue[0]", "database", "manual"], + ["group:gocb2", "TransactionAttemptContext", true, "Insert", "", "", "ReturnValue[0]", "database", "manual"], + ["group:gocb2", "TransactionAttemptContext", true, "Query", "", "", "ReturnValue[0]", "database", "manual"], + ["group:gocb2", "TransactionAttemptContext", true, "Replace", "", "", "ReturnValue[0]", "database", "manual"], + ["group:gocb2", "ViewIndexManager", true, "GetAllDesignDocuments", "", "", "ReturnValue[0]", "database", "manual"], + ["group:gocb2", "ViewIndexManager", true, "GetDesignDocument", "", "", "ReturnValue[0]", "database", "manual"] + ] + }, + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "sinkModel" + }, + "data": [ + ["group:gocb1", "Bucket", true, "ExecuteN1qlQuery", "", "", "Argument[0]", "nosql-injection", "manual"], + ["group:gocb1", "Bucket", true, "ExecuteAnalyticsQuery", "", "", "Argument[0]", "nosql-injection", "manual"], + ["group:gocb1", "Cluster", true, "ExecuteN1qlQuery", "", "", "Argument[0]", "nosql-injection", "manual"], + ["group:gocb1", "Cluster", true, "ExecuteAnalyticsQuery", "", "", "Argument[0]", "nosql-injection", "manual"], + ["group:gocb2", "Cluster", true, "AnalyticsQuery", "", "", "Argument[0]", "nosql-injection", "manual"], + ["group:gocb2", "Cluster", true, "Query", "", "", "Argument[0]", "nosql-injection", "manual"], + ["group:gocb2", "Scope", true, "AnalyticsQuery", "", "", "Argument[0]", "nosql-injection", "manual"], + ["group:gocb2", "Scope", true, "Query", "", "", "Argument[0]", "nosql-injection", "manual"] + ] + }, + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "summaryModel" + }, + "data": [ + ["group:gocb1", "", false, "NewAnalyticsQuery", "", "", "Argument[0]", "ReturnValue", "taint", "manual"], + ["group:gocb1", "", false, "NewN1qlQuery", "", "", "Argument[0]", "ReturnValue", "taint", "manual"], + ["group:gocb1", "AnalyticsResults", true, "One", "", "", "Argument[receiver]", "Argument[0]", "taint", "manual"], + ["group:gocb1", "AnalyticsResults", true, "Next", "", "", "Argument[receiver]", "Argument[0]", "taint", "manual"], + ["group:gocb1", "AnalyticsResults", true, "NextBytes", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"], + ["group:gocb1", "AnalyticsQuery", true, "ContextId", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"], + ["group:gocb1", "AnalyticsQuery", true, "Deferred", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"], + ["group:gocb1", "AnalyticsQuery", true, "Pretty", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"], + ["group:gocb1", "AnalyticsQuery", true, "Priority", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"], + ["group:gocb1", "AnalyticsQuery", true, "RawParam", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"], + ["group:gocb1", "AnalyticsQuery", true, "ServerSideTimeout", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"], + ["group:gocb1", "N1qlQuery", true, "AdHoc", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"], + ["group:gocb1", "N1qlQuery", true, "Consistency", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"], + ["group:gocb1", "N1qlQuery", true, "ConsistentWith", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"], + ["group:gocb1", "N1qlQuery", true, "Custom", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"], + ["group:gocb1", "N1qlQuery", true, "PipelineBatch", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"], + ["group:gocb1", "N1qlQuery", true, "PipelineCap", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"], + ["group:gocb1", "N1qlQuery", true, "Profile", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"], + ["group:gocb1", "N1qlQuery", true, "ReadOnly", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"], + ["group:gocb1", "N1qlQuery", true, "ScanCap", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"], + ["group:gocb1", "N1qlQuery", true, "Timeout", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"], + ["group:gocb1", "QueryResults", true, "One", "", "", "Argument[receiver]", "Argument[0]", "taint", "manual"], + ["group:gocb1", "QueryResults", true, "Next", "", "", "Argument[receiver]", "Argument[0]", "taint", "manual"], + ["group:gocb1", "QueryResults", true, "NextBytes", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"], + ["group:gocb1", "SearchResults", true, "Hits", "", "", "Argument[receiver]", "ReturnValue.ArrayElement", "taint", "manual"], + ["group:gocb2", "AnalyticsResult", true, "One", "", "", "Argument[receiver]", "Argument[0]", "taint", "manual"], + ["group:gocb2", "AnalyticsResult", true, "Raw", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"], + ["group:gocb2", "AnalyticsResult", true, "Row", "", "", "Argument[receiver]", "Argument[0]", "taint", "manual"], + ["group:gocb2", "AnalyticsResultRaw", true, "NextBytes", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"], + ["group:gocb2", "GetResult", true, "Content", "", "", "Argument[receiver]", "Argument[0]", "taint", "manual"], + ["group:gocb2", "LookupInAllReplicasResult", true, "Next", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"], + ["group:gocb2", "LookupInResult", true, "ContentAt", "", "", "Argument[receiver]", "Argument[1]", "taint", "manual"], + ["group:gocb2", "MutateInResult", true, "ContentAt", "", "", "Argument[receiver]", "Argument[1]", "taint", "manual"], + ["group:gocb2", "QueryResult", true, "One", "", "", "Argument[receiver]", "Argument[0]", "taint", "manual"], + ["group:gocb2", "QueryResult", true, "Raw", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"], + ["group:gocb2", "QueryResult", true, "Row", "", "", "Argument[receiver]", "Argument[0]", "taint", "manual"], + ["group:gocb2", "QueryResultRaw", true, "NextBytes", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"], + ["group:gocb2", "ScanResult", true, "Next", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"], + ["group:gocb2", "ScanResultItem", true, "Content", "", "", "Argument[receiver]", "Argument[0]", "taint", "manual"], + ["group:gocb2", "SearchResult", true, "Raw", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"], + ["group:gocb2", "SearchResult", true, "Row", "", "", "Argument[receiver]", "Argument[0]", "taint", "manual"], + ["group:gocb2", "SearchResultRaw", true, "NextBytes", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"], + ["group:gocb2", "TransactionGetResult", true, "Content", "", "", "Argument[receiver]", "Argument[0]", "taint", "manual"], + ["group:gocb2", "TransactionQueryResult", true, "One", "", "", "Argument[receiver]", "Argument[0]", "taint", "manual"], + ["group:gocb2", "TransactionQueryResult", true, "Row", "", "", "Argument[receiver]", "Argument[0]", "taint", "manual"], + ["group:gocb2", "ViewResult", true, "Raw", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"], + ["group:gocb2", "ViewResult", true, "Row", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"], + ["group:gocb2", "ViewResultRaw", true, "NextBytes", "", "", "Argument[receiver]", "ReturnValue[0]", "taint", "manual"] + ] + } + ] +} diff --git a/go/ql/lib/ext/github.com.couchbase.gocb.model.yml b/go/ql/lib/ext/github.com.couchbase.gocb.model.yml deleted file mode 100644 index d485c5a25286..000000000000 --- a/go/ql/lib/ext/github.com.couchbase.gocb.model.yml +++ /dev/null @@ -1,101 +0,0 @@ -extensions: - - addsTo: - pack: codeql/go-all - extensible: packageGrouping - data: - - ["gocb1", "fixed-version:github.com/couchbase/gocb"] - - ["gocb1", "fixed-version:gopkg.in/couchbase/gocb.v1"] - - ["gocb1", "fixed-version:github.com/couchbaselabs/gocb"] - - ["gocb2", "github.com/couchbase/gocb/v2"] - - ["gocb2", "gopkg.in/couchbase/gocb.v2"] - - ["gocb2", "github.com/couchbaselabs/gocb/v2"] - - addsTo: - pack: codeql/go-all - extensible: sourceModel - data: - - ["group:gocb1", "Cluster", True, "ExecuteAnalyticsQuery", "", "", "ReturnValue[0]", "database", "manual"] - - ["group:gocb1", "Cluster", True, "ExecuteN1qlQuery", "", "", "ReturnValue[0]", "database", "manual"] - - ["group:gocb1", "Cluster", True, "ExecuteSearchQuery", "", "", "ReturnValue[0]", "database", "manual"] - - ["group:gocb2", "Cluster", True, "AnalyticsQuery", "", "", "ReturnValue[0]", "database", "manual"] - - ["group:gocb2", "Cluster", True, "Query", "", "", "ReturnValue[0]", "database", "manual"] - - ["group:gocb2", "Collection", True, "Get", "", "", "ReturnValue[0]", "database", "manual"] - - ["group:gocb2", "Collection", True, "GetAndLock", "", "", "ReturnValue[0]", "database", "manual"] - - ["group:gocb2", "Collection", True, "GetAndTouch", "", "", "ReturnValue[0]", "database", "manual"] - - ["group:gocb2", "Collection", True, "GetAnyReplica", "", "", "ReturnValue[0]", "database", "manual"] - - ["group:gocb2", "Collection", True, "LookupIn", "", "", "ReturnValue[0]", "database", "manual"] - - ["group:gocb2", "Collection", True, "LookupInAllReplicas", "", "", "ReturnValue[0]", "database", "manual"] - - ["group:gocb2", "Collection", True, "LookupInAnyReplica", "", "", "ReturnValue[0]", "database", "manual"] - - ["group:gocb2", "Collection", True, "Scan", "", "", "ReturnValue[0]", "database", "manual"] - - ["group:gocb2", "Scope", True, "AnalyticsQuery", "", "", "ReturnValue[0]", "database", "manual"] - - ["group:gocb2", "Scope", True, "Query", "", "", "ReturnValue[0]", "database", "manual"] - - ["group:gocb2", "TransactionAttemptContext", True, "Get", "", "", "ReturnValue[0]", "database", "manual"] - - ["group:gocb2", "TransactionAttemptContext", True, "GetReplicaFromPreferredServerGroup", "", "", "ReturnValue[0]", "database", "manual"] - - ["group:gocb2", "TransactionAttemptContext", True, "Insert", "", "", "ReturnValue[0]", "database", "manual"] - - ["group:gocb2", "TransactionAttemptContext", True, "Query", "", "", "ReturnValue[0]", "database", "manual"] - - ["group:gocb2", "TransactionAttemptContext", True, "Replace", "", "", "ReturnValue[0]", "database", "manual"] - - ["group:gocb2", "ViewIndexManager", True, "GetAllDesignDocuments", "", "", "ReturnValue[0]", "database", "manual"] - - ["group:gocb2", "ViewIndexManager", True, "GetDesignDocument", "", "", "ReturnValue[0]", "database", "manual"] - - addsTo: - pack: codeql/go-all - extensible: sinkModel - data: - - ["group:gocb1", "Bucket", True, "ExecuteN1qlQuery", "", "", "Argument[0]", "nosql-injection", "manual"] - - ["group:gocb1", "Bucket", True, "ExecuteAnalyticsQuery", "", "", "Argument[0]", "nosql-injection", "manual"] - - ["group:gocb1", "Cluster", True, "ExecuteN1qlQuery", "", "", "Argument[0]", "nosql-injection", "manual"] - - ["group:gocb1", "Cluster", True, "ExecuteAnalyticsQuery", "", "", "Argument[0]", "nosql-injection", "manual"] - - ["group:gocb2", "Cluster", True, "AnalyticsQuery", "", "", "Argument[0]", "nosql-injection", "manual"] - - ["group:gocb2", "Cluster", True, "Query", "", "", "Argument[0]", "nosql-injection", "manual"] - - ["group:gocb2", "Scope", True, "AnalyticsQuery", "", "", "Argument[0]", "nosql-injection", "manual"] - - ["group:gocb2", "Scope", True, "Query", "", "", "Argument[0]", "nosql-injection", "manual"] - - addsTo: - pack: codeql/go-all - extensible: summaryModel - data: - - ["group:gocb1", "", False, "NewAnalyticsQuery", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] - - ["group:gocb1", "", False, "NewN1qlQuery", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] - - ["group:gocb1", "AnalyticsResults", True, "One", "", "", "Argument[receiver]", "Argument[0]", "taint", "manual"] - - ["group:gocb1", "AnalyticsResults", True, "Next", "", "", "Argument[receiver]", "Argument[0]", "taint", "manual"] - - ["group:gocb1", "AnalyticsResults", True, "NextBytes", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] - - ["group:gocb1", "AnalyticsQuery", True, "ContextId", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] - - ["group:gocb1", "AnalyticsQuery", True, "Deferred", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] - - ["group:gocb1", "AnalyticsQuery", True, "Pretty", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] - - ["group:gocb1", "AnalyticsQuery", True, "Priority", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] - - ["group:gocb1", "AnalyticsQuery", True, "RawParam", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] - - ["group:gocb1", "AnalyticsQuery", True, "ServerSideTimeout", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] - - ["group:gocb1", "N1qlQuery", True, "AdHoc", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] - - ["group:gocb1", "N1qlQuery", True, "Consistency", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] - - ["group:gocb1", "N1qlQuery", True, "ConsistentWith", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] - - ["group:gocb1", "N1qlQuery", True, "Custom", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] - - ["group:gocb1", "N1qlQuery", True, "PipelineBatch", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] - - ["group:gocb1", "N1qlQuery", True, "PipelineCap", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] - - ["group:gocb1", "N1qlQuery", True, "Profile", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] - - ["group:gocb1", "N1qlQuery", True, "ReadOnly", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] - - ["group:gocb1", "N1qlQuery", True, "ScanCap", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] - - ["group:gocb1", "N1qlQuery", True, "Timeout", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] - - ["group:gocb1", "QueryResults", True, "One", "", "", "Argument[receiver]", "Argument[0]", "taint", "manual"] - - ["group:gocb1", "QueryResults", True, "Next", "", "", "Argument[receiver]", "Argument[0]", "taint", "manual"] - - ["group:gocb1", "QueryResults", True, "NextBytes", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] - - ["group:gocb1", "SearchResults", True, "Hits", "", "", "Argument[receiver]", "ReturnValue.ArrayElement", "taint", "manual"] - - ["group:gocb2", "AnalyticsResult", True, "One", "", "", "Argument[receiver]", "Argument[0]", "taint", "manual"] - - ["group:gocb2", "AnalyticsResult", True, "Raw", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] - - ["group:gocb2", "AnalyticsResult", True, "Row", "", "", "Argument[receiver]", "Argument[0]", "taint", "manual"] - - ["group:gocb2", "AnalyticsResultRaw", True, "NextBytes", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] - - ["group:gocb2", "GetResult", True, "Content", "", "", "Argument[receiver]", "Argument[0]", "taint", "manual"] - - ["group:gocb2", "LookupInAllReplicasResult", True, "Next", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] - - ["group:gocb2", "LookupInResult", True, "ContentAt", "", "", "Argument[receiver]", "Argument[1]", "taint", "manual"] - - ["group:gocb2", "MutateInResult", True, "ContentAt", "", "", "Argument[receiver]", "Argument[1]", "taint", "manual"] - - ["group:gocb2", "QueryResult", True, "One", "", "", "Argument[receiver]", "Argument[0]", "taint", "manual"] - - ["group:gocb2", "QueryResult", True, "Raw", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] - - ["group:gocb2", "QueryResult", True, "Row", "", "", "Argument[receiver]", "Argument[0]", "taint", "manual"] - - ["group:gocb2", "QueryResultRaw", True, "NextBytes", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] - - ["group:gocb2", "ScanResult", True, "Next", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] - - ["group:gocb2", "ScanResultItem", True, "Content", "", "", "Argument[receiver]", "Argument[0]", "taint", "manual"] - - ["group:gocb2", "SearchResult", True, "Raw", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] - - ["group:gocb2", "SearchResult", True, "Row", "", "", "Argument[receiver]", "Argument[0]", "taint", "manual"] - - ["group:gocb2", "SearchResultRaw", True, "NextBytes", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] - - ["group:gocb2", "TransactionGetResult", True, "Content", "", "", "Argument[receiver]", "Argument[0]", "taint", "manual"] - - ["group:gocb2", "TransactionQueryResult", True, "One", "", "", "Argument[receiver]", "Argument[0]", "taint", "manual"] - - ["group:gocb2", "TransactionQueryResult", True, "Row", "", "", "Argument[receiver]", "Argument[0]", "taint", "manual"] - - ["group:gocb2", "ViewResult", True, "Raw", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] - - ["group:gocb2", "ViewResult", True, "Row", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] - - ["group:gocb2", "ViewResultRaw", True, "NextBytes", "", "", "Argument[receiver]", "ReturnValue[0]", "taint", "manual"] diff --git a/go/ql/lib/ext/github.com.cristalhq.jwt.model.json b/go/ql/lib/ext/github.com.cristalhq.jwt.model.json new file mode 100644 index 000000000000..1d34566c7991 --- /dev/null +++ b/go/ql/lib/ext/github.com.cristalhq.jwt.model.json @@ -0,0 +1,13 @@ +{ + "extensions": [ + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "sinkModel" + }, + "data": [ + ["github.com/cristalhq/jwt", "", false, "NewSignerHS", "", "", "Argument[1]", "credentials-key", "manual"] + ] + } + ] +} diff --git a/go/ql/lib/ext/github.com.cristalhq.jwt.model.yml b/go/ql/lib/ext/github.com.cristalhq.jwt.model.yml deleted file mode 100644 index cdf84d232928..000000000000 --- a/go/ql/lib/ext/github.com.cristalhq.jwt.model.yml +++ /dev/null @@ -1,6 +0,0 @@ -extensions: - - addsTo: - pack: codeql/go-all - extensible: sinkModel - data: - - ["github.com/cristalhq/jwt", "", False, "NewSignerHS", "", "", "Argument[1]", "credentials-key", "manual"] diff --git a/go/ql/lib/ext/github.com.davecgh.go-spew.spew.model.json b/go/ql/lib/ext/github.com.davecgh.go-spew.spew.model.json new file mode 100644 index 000000000000..c1e1d7971bca --- /dev/null +++ b/go/ql/lib/ext/github.com.davecgh.go-spew.spew.model.json @@ -0,0 +1,21 @@ +{ + "extensions": [ + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "sinkModel" + }, + "data": [ + ["github.com/davecgh/go-spew/spew", "", false, "Dump", "", "", "Argument[0]", "log-injection", "manual"], + ["github.com/davecgh/go-spew/spew", "", false, "Errorf", "", "", "Argument[0..1]", "log-injection", "manual"], + ["github.com/davecgh/go-spew/spew", "", false, "Fdump", "", "", "Argument[1]", "log-injection", "manual"], + ["github.com/davecgh/go-spew/spew", "", false, "Fprint", "", "", "Argument[1]", "log-injection", "manual"], + ["github.com/davecgh/go-spew/spew", "", false, "Fprintf", "", "", "Argument[1..2]", "log-injection", "manual"], + ["github.com/davecgh/go-spew/spew", "", false, "Fprintln", "", "", "Argument[1]", "log-injection", "manual"], + ["github.com/davecgh/go-spew/spew", "", false, "Print", "", "", "Argument[0]", "log-injection", "manual"], + ["github.com/davecgh/go-spew/spew", "", false, "Printf", "", "", "Argument[0..1]", "log-injection", "manual"], + ["github.com/davecgh/go-spew/spew", "", false, "Println", "", "", "Argument[0]", "log-injection", "manual"] + ] + } + ] +} diff --git a/go/ql/lib/ext/github.com.davecgh.go-spew.spew.model.yml b/go/ql/lib/ext/github.com.davecgh.go-spew.spew.model.yml deleted file mode 100644 index 4b4996926e31..000000000000 --- a/go/ql/lib/ext/github.com.davecgh.go-spew.spew.model.yml +++ /dev/null @@ -1,14 +0,0 @@ -extensions: - - addsTo: - pack: codeql/go-all - extensible: sinkModel - data: - - ["github.com/davecgh/go-spew/spew", "", False, "Dump", "", "", "Argument[0]", "log-injection", "manual"] - - ["github.com/davecgh/go-spew/spew", "", False, "Errorf", "", "", "Argument[0..1]", "log-injection", "manual"] - - ["github.com/davecgh/go-spew/spew", "", False, "Fdump", "", "", "Argument[1]", "log-injection", "manual"] - - ["github.com/davecgh/go-spew/spew", "", False, "Fprint", "", "", "Argument[1]", "log-injection", "manual"] - - ["github.com/davecgh/go-spew/spew", "", False, "Fprintf", "", "", "Argument[1..2]", "log-injection", "manual"] - - ["github.com/davecgh/go-spew/spew", "", False, "Fprintln", "", "", "Argument[1]", "log-injection", "manual"] - - ["github.com/davecgh/go-spew/spew", "", False, "Print", "", "", "Argument[0]", "log-injection", "manual"] - - ["github.com/davecgh/go-spew/spew", "", False, "Printf", "", "", "Argument[0..1]", "log-injection", "manual"] - - ["github.com/davecgh/go-spew/spew", "", False, "Println", "", "", "Argument[0]", "log-injection", "manual"] diff --git a/go/ql/lib/ext/github.com.dgrijalva.jwt-go.model.json b/go/ql/lib/ext/github.com.dgrijalva.jwt-go.model.json new file mode 100644 index 000000000000..1905012c9223 --- /dev/null +++ b/go/ql/lib/ext/github.com.dgrijalva.jwt-go.model.json @@ -0,0 +1,32 @@ +{ + "extensions": [ + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "sinkModel" + }, + "data": [ + ["github.com/dgrijalva/jwt-go", "SigningMethod", true, "Sign", "", "", "Argument[1]", "credentials-key", "manual"], + ["github.com/dgrijalva/jwt-go", "Token", true, "SignedString", "", "", "Argument[0]", "credentials-key", "manual"], + ["github.com/dgrijalva/jwt-go", "Parser", true, "ParseUnverified", "", "", "Argument[0]", "jwt", "manual"] + ] + }, + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "summaryModel" + }, + "data": [ + ["github.com/dgrijalva/jwt-go", "", false, "Parse", "", "", "Argument[0]", "ReturnValue[0]", "taint", "manual"], + ["github.com/dgrijalva/jwt-go", "Parser", true, "Parse", "", "", "Argument[0]", "ReturnValue[0]", "taint", "manual"], + ["github.com/dgrijalva/jwt-go", "", false, "ParseWithClaims", "", "", "Argument[0]", "ReturnValue[0]", "taint", "manual"], + ["github.com/dgrijalva/jwt-go", "Parser", true, "ParseWithClaims", "", "", "Argument[0]", "ReturnValue[0]", "taint", "manual"], + ["github.com/dgrijalva/jwt-go", "", false, "ParseECPrivateKeyFromPEM", "", "", "Argument[0]", "ReturnValue[0]", "taint", "manual"], + ["github.com/dgrijalva/jwt-go", "", false, "ParseECPublicKeyFromPEM", "", "", "Argument[0]", "ReturnValue[0]", "taint", "manual"], + ["github.com/dgrijalva/jwt-go", "", false, "ParseRSAPrivateKeyFromPEM", "", "", "Argument[0]", "ReturnValue[0]", "taint", "manual"], + ["github.com/dgrijalva/jwt-go", "", false, "ParseRSAPrivateKeyFromPEMWithPassword", "", "", "Argument[0]", "ReturnValue[0]", "taint", "manual"], + ["github.com/dgrijalva/jwt-go", "", false, "ParseRSAPublicKeyFromPEM", "", "", "Argument[0]", "ReturnValue[0]", "taint", "manual"] + ] + } + ] +} diff --git a/go/ql/lib/ext/github.com.dgrijalva.jwt-go.model.yml b/go/ql/lib/ext/github.com.dgrijalva.jwt-go.model.yml deleted file mode 100644 index 90b62a800dba..000000000000 --- a/go/ql/lib/ext/github.com.dgrijalva.jwt-go.model.yml +++ /dev/null @@ -1,21 +0,0 @@ -extensions: - - addsTo: - pack: codeql/go-all - extensible: sinkModel - data: - - ["github.com/dgrijalva/jwt-go", "SigningMethod", True, "Sign", "", "", "Argument[1]", "credentials-key", "manual"] - - ["github.com/dgrijalva/jwt-go", "Token", True, "SignedString", "", "", "Argument[0]", "credentials-key", "manual"] - - ["github.com/dgrijalva/jwt-go", "Parser", True, "ParseUnverified", "", "", "Argument[0]", "jwt", "manual"] - - addsTo: - pack: codeql/go-all - extensible: summaryModel - data: - - ["github.com/dgrijalva/jwt-go", "", False, "Parse", "", "", "Argument[0]", "ReturnValue[0]", "taint", "manual"] - - ["github.com/dgrijalva/jwt-go", "Parser", True, "Parse", "", "", "Argument[0]", "ReturnValue[0]", "taint", "manual"] - - ["github.com/dgrijalva/jwt-go", "", False, "ParseWithClaims", "", "", "Argument[0]", "ReturnValue[0]", "taint", "manual"] - - ["github.com/dgrijalva/jwt-go", "Parser", True, "ParseWithClaims", "", "", "Argument[0]", "ReturnValue[0]", "taint", "manual"] - - ["github.com/dgrijalva/jwt-go", "", False, "ParseECPrivateKeyFromPEM", "", "", "Argument[0]", "ReturnValue[0]", "taint", "manual"] - - ["github.com/dgrijalva/jwt-go", "", False, "ParseECPublicKeyFromPEM", "", "", "Argument[0]", "ReturnValue[0]", "taint", "manual"] - - ["github.com/dgrijalva/jwt-go", "", False, "ParseRSAPrivateKeyFromPEM", "", "", "Argument[0]", "ReturnValue[0]", "taint", "manual"] - - ["github.com/dgrijalva/jwt-go", "", False, "ParseRSAPrivateKeyFromPEMWithPassword", "", "", "Argument[0]", "ReturnValue[0]", "taint", "manual"] - - ["github.com/dgrijalva/jwt-go", "", False, "ParseRSAPublicKeyFromPEM", "", "", "Argument[0]", "ReturnValue[0]", "taint", "manual"] diff --git a/go/ql/lib/ext/github.com.elazarl.goproxy.model.json b/go/ql/lib/ext/github.com.elazarl.goproxy.model.json new file mode 100644 index 000000000000..d78377fc1047 --- /dev/null +++ b/go/ql/lib/ext/github.com.elazarl.goproxy.model.json @@ -0,0 +1,34 @@ +{ + "extensions": [ + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "sinkModel" + }, + "data": [ + ["github.com/elazarl/goproxy", "ProxyCtx", true, "Logf", "", "", "Argument[0..1]", "log-injection", "manual"], + ["github.com/elazarl/goproxy", "ProxyCtx", true, "Warnf", "", "", "Argument[0..1]", "log-injection", "manual"] + ] + }, + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "summaryModel" + }, + "data": [ + ["github.com/elazarl/goproxy", "CertStorage", true, "Fetch", "", "", "Argument[receiver]", "ReturnValue[0]", "taint", "manual"], + ["github.com/elazarl/goproxy", "CertStorage", true, "Fetch", "", "", "Argument[1]", "ReturnValue[0]", "taint", "manual"] + ] + }, + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "sourceModel" + }, + "data": [ + ["github.com/elazarl/goproxy", "ProxyCtx", true, "UserData", "", "", "", "remote", "manual"], + ["github.com/elazarl/goproxy", "ProxyCtx", true, "Charset", "", "", "ReturnValue", "remote", "manual"] + ] + } + ] +} diff --git a/go/ql/lib/ext/github.com.elazarl.goproxy.model.yml b/go/ql/lib/ext/github.com.elazarl.goproxy.model.yml deleted file mode 100644 index 9dc8284ea58f..000000000000 --- a/go/ql/lib/ext/github.com.elazarl.goproxy.model.yml +++ /dev/null @@ -1,20 +0,0 @@ -extensions: - - addsTo: - pack: codeql/go-all - extensible: sinkModel - data: - - ["github.com/elazarl/goproxy", "ProxyCtx", True, "Logf", "", "", "Argument[0..1]", "log-injection", "manual"] - - ["github.com/elazarl/goproxy", "ProxyCtx", True, "Warnf", "", "", "Argument[0..1]", "log-injection", "manual"] - - addsTo: - pack: codeql/go-all - extensible: summaryModel - data: - - ["github.com/elazarl/goproxy", "CertStorage", True, "Fetch", "", "", "Argument[receiver]", "ReturnValue[0]", "taint", "manual"] - - ["github.com/elazarl/goproxy", "CertStorage", True, "Fetch", "", "", "Argument[1]", "ReturnValue[0]", "taint", "manual"] - - - addsTo: - pack: codeql/go-all - extensible: sourceModel - data: - - ["github.com/elazarl/goproxy", "ProxyCtx", True, "UserData", "", "", "", "remote", "manual"] - - ["github.com/elazarl/goproxy", "ProxyCtx", True, "Charset", "", "", "ReturnValue", "remote", "manual"] diff --git a/go/ql/lib/ext/github.com.emicklei.go-restful.model.json b/go/ql/lib/ext/github.com.emicklei.go-restful.model.json new file mode 100644 index 000000000000..c41bff5e6300 --- /dev/null +++ b/go/ql/lib/ext/github.com.emicklei.go-restful.model.json @@ -0,0 +1,19 @@ +{ + "extensions": [ + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "sourceModel" + }, + "data": [ + ["github.com/emicklei/go-restful", "Request", true, "QueryParameters", "", "", "ReturnValue", "remote", "manual"], // TODO: when sources can have access paths, use .ArrayElement + ["github.com/emicklei/go-restful", "Request", true, "QueryParameter", "", "", "ReturnValue", "remote", "manual"], + ["github.com/emicklei/go-restful", "Request", true, "BodyParameter", "", "", "ReturnValue[0]", "remote", "manual"], + ["github.com/emicklei/go-restful", "Request", true, "HeaderParameter", "", "", "ReturnValue", "remote", "manual"], + ["github.com/emicklei/go-restful", "Request", true, "PathParameter", "", "", "ReturnValue", "remote", "manual"], + ["github.com/emicklei/go-restful", "Request", true, "PathParameters", "", "", "ReturnValue", "remote", "manual"], // TODO: when sources can have access paths, use .MapValue + ["github.com/emicklei/go-restful", "Request", true, "ReadEntity", "", "", "Argument[0]", "remote", "manual"] + ] + } + ] +} diff --git a/go/ql/lib/ext/github.com.emicklei.go-restful.model.yml b/go/ql/lib/ext/github.com.emicklei.go-restful.model.yml deleted file mode 100644 index 45043709c0d9..000000000000 --- a/go/ql/lib/ext/github.com.emicklei.go-restful.model.yml +++ /dev/null @@ -1,12 +0,0 @@ -extensions: - - addsTo: - pack: codeql/go-all - extensible: sourceModel - data: - - ["github.com/emicklei/go-restful", "Request", True, "QueryParameters", "", "", "ReturnValue", "remote", "manual"] # TODO: when sources can have access paths, use .ArrayElement - - ["github.com/emicklei/go-restful", "Request", True, "QueryParameter", "", "", "ReturnValue", "remote", "manual"] - - ["github.com/emicklei/go-restful", "Request", True, "BodyParameter", "", "", "ReturnValue[0]", "remote", "manual"] - - ["github.com/emicklei/go-restful", "Request", True, "HeaderParameter", "", "", "ReturnValue", "remote", "manual"] - - ["github.com/emicklei/go-restful", "Request", True, "PathParameter", "", "", "ReturnValue", "remote", "manual"] - - ["github.com/emicklei/go-restful", "Request", True, "PathParameters", "", "", "ReturnValue", "remote", "manual"] # TODO: when sources can have access paths, use .MapValue - - ["github.com/emicklei/go-restful", "Request", True, "ReadEntity", "", "", "Argument[0]", "remote", "manual"] diff --git a/go/ql/lib/ext/github.com.evanphx.json-patch.model.json b/go/ql/lib/ext/github.com.evanphx.json-patch.model.json new file mode 100644 index 000000000000..eb542b98e48f --- /dev/null +++ b/go/ql/lib/ext/github.com.evanphx.json-patch.model.json @@ -0,0 +1,24 @@ +{ + "extensions": [ + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "summaryModel" + }, + "data": [ + ["github.com/evanphx/json-patch", "", false, "CreateMergePatch", "", "", "Argument[0..1]", "ReturnValue[0]", "taint", "manual"], + ["github.com/evanphx/json-patch", "", false, "DecodePatch", "", "", "Argument[0]", "ReturnValue[0]", "taint", "manual"], + ["github.com/evanphx/json-patch", "", false, "MergeMergePatches", "", "", "Argument[0..1]", "ReturnValue[0]", "taint", "manual"], + ["github.com/evanphx/json-patch", "", false, "MergePatch", "", "", "Argument[0..1]", "ReturnValue[0]", "taint", "manual"], + ["github.com/evanphx/json-patch", "Patch", true, "Apply", "", "", "Argument[receiver]", "ReturnValue[0]", "taint", "manual"], + ["github.com/evanphx/json-patch", "Patch", true, "Apply", "", "", "Argument[0]", "ReturnValue[0]", "taint", "manual"], + ["github.com/evanphx/json-patch", "Patch", true, "ApplyIndent", "", "", "Argument[receiver]", "ReturnValue[0]", "taint", "manual"], + ["github.com/evanphx/json-patch", "Patch", true, "ApplyIndent", "", "", "Argument[0]", "ReturnValue[0]", "taint", "manual"], + ["github.com/evanphx/json-patch", "Patch", true, "ApplyIndentWithOptions", "", "", "Argument[receiver]", "ReturnValue[0]", "taint", "manual"], + ["github.com/evanphx/json-patch", "Patch", true, "ApplyIndentWithOptions", "", "", "Argument[0]", "ReturnValue[0]", "taint", "manual"], + ["github.com/evanphx/json-patch", "Patch", true, "ApplyWithOptions", "", "", "Argument[receiver]", "ReturnValue[0]", "taint", "manual"], + ["github.com/evanphx/json-patch", "Patch", true, "ApplyWithOptions", "", "", "Argument[0]", "ReturnValue[0]", "taint", "manual"] + ] + } + ] +} diff --git a/go/ql/lib/ext/github.com.evanphx.json-patch.model.yml b/go/ql/lib/ext/github.com.evanphx.json-patch.model.yml deleted file mode 100644 index 4824f521e4ef..000000000000 --- a/go/ql/lib/ext/github.com.evanphx.json-patch.model.yml +++ /dev/null @@ -1,17 +0,0 @@ -extensions: - - addsTo: - pack: codeql/go-all - extensible: summaryModel - data: - - ["github.com/evanphx/json-patch", "", False, "CreateMergePatch", "", "", "Argument[0..1]", "ReturnValue[0]", "taint", "manual"] - - ["github.com/evanphx/json-patch", "", False, "DecodePatch", "", "", "Argument[0]", "ReturnValue[0]", "taint", "manual"] - - ["github.com/evanphx/json-patch", "", False, "MergeMergePatches", "", "", "Argument[0..1]", "ReturnValue[0]", "taint", "manual"] - - ["github.com/evanphx/json-patch", "", False, "MergePatch", "", "", "Argument[0..1]", "ReturnValue[0]", "taint", "manual"] - - ["github.com/evanphx/json-patch", "Patch", True, "Apply", "", "", "Argument[receiver]", "ReturnValue[0]", "taint", "manual"] - - ["github.com/evanphx/json-patch", "Patch", True, "Apply", "", "", "Argument[0]", "ReturnValue[0]", "taint", "manual"] - - ["github.com/evanphx/json-patch", "Patch", True, "ApplyIndent", "", "", "Argument[receiver]", "ReturnValue[0]", "taint", "manual"] - - ["github.com/evanphx/json-patch", "Patch", True, "ApplyIndent", "", "", "Argument[0]", "ReturnValue[0]", "taint", "manual"] - - ["github.com/evanphx/json-patch", "Patch", True, "ApplyIndentWithOptions", "", "", "Argument[receiver]", "ReturnValue[0]", "taint", "manual"] - - ["github.com/evanphx/json-patch", "Patch", True, "ApplyIndentWithOptions", "", "", "Argument[0]", "ReturnValue[0]", "taint", "manual"] - - ["github.com/evanphx/json-patch", "Patch", True, "ApplyWithOptions", "", "", "Argument[receiver]", "ReturnValue[0]", "taint", "manual"] - - ["github.com/evanphx/json-patch", "Patch", True, "ApplyWithOptions", "", "", "Argument[0]", "ReturnValue[0]", "taint", "manual"] diff --git a/go/ql/lib/ext/github.com.form3tech-oss.jwt-go.model.json b/go/ql/lib/ext/github.com.form3tech-oss.jwt-go.model.json new file mode 100644 index 000000000000..6737bcf19e15 --- /dev/null +++ b/go/ql/lib/ext/github.com.form3tech-oss.jwt-go.model.json @@ -0,0 +1,14 @@ +{ + "extensions": [ + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "sinkModel" + }, + "data": [ + ["github.com/form3tech-oss/jwt-go", "Token", true, "SignedString", "", "", "Argument[0]", "credentials-key", "manual"], + ["github.com/form3tech-oss/jwt-go", "SigningMethod", true, "Sign", "", "", "Argument[1]", "credentials-key", "manual"] + ] + } + ] +} diff --git a/go/ql/lib/ext/github.com.form3tech-oss.jwt-go.model.yml b/go/ql/lib/ext/github.com.form3tech-oss.jwt-go.model.yml deleted file mode 100644 index 92a82798d8a6..000000000000 --- a/go/ql/lib/ext/github.com.form3tech-oss.jwt-go.model.yml +++ /dev/null @@ -1,7 +0,0 @@ -extensions: - - addsTo: - pack: codeql/go-all - extensible: sinkModel - data: - - ["github.com/form3tech-oss/jwt-go", "Token", True, "SignedString", "", "", "Argument[0]", "credentials-key", "manual"] - - ["github.com/form3tech-oss/jwt-go", "SigningMethod", True, "Sign", "", "", "Argument[1]", "credentials-key", "manual"] diff --git a/go/ql/lib/ext/github.com.gin-gonic.gin.model.json b/go/ql/lib/ext/github.com.gin-gonic.gin.model.json new file mode 100644 index 000000000000..e0f20e33da77 --- /dev/null +++ b/go/ql/lib/ext/github.com.gin-gonic.gin.model.json @@ -0,0 +1,79 @@ +{ + "extensions": [ + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "sinkModel" + }, + "data": [ + ["github.com/gin-gonic/gin", "Context", true, "File", "", "", "Argument[0]", "path-injection", "manual"], + ["github.com/gin-gonic/gin", "Context", true, "FileAttachment", "", "", "Argument[0]", "path-injection", "manual"], + ["github.com/gin-gonic/gin", "Context", true, "SaveUploadedFile", "", "", "Argument[1]", "path-injection", "manual"] + ] + }, + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "summaryModel" + }, + "data": [ + ["github.com/gin-gonic/gin", "Params", true, "ByName", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"], + ["github.com/gin-gonic/gin", "Params", true, "Get", "", "", "Argument[receiver]", "ReturnValue[0]", "taint", "manual"] + ] + }, + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "sourceModel" + }, + "data": [ + ["github.com/gin-gonic/gin", "Context", true, "Accepted", "", "", "", "remote", "manual"], + ["github.com/gin-gonic/gin", "Context", true, "Bind", "", "", "Argument[0]", "remote", "manual"], + ["github.com/gin-gonic/gin", "Context", true, "BindHeader", "", "", "Argument[0]", "remote", "manual"], + ["github.com/gin-gonic/gin", "Context", true, "BindJSON", "", "", "Argument[0]", "remote", "manual"], + ["github.com/gin-gonic/gin", "Context", true, "BindQuery", "", "", "Argument[0]", "remote", "manual"], + ["github.com/gin-gonic/gin", "Context", true, "BindXML", "", "", "Argument[0]", "remote", "manual"], + ["github.com/gin-gonic/gin", "Context", true, "BindYAML", "", "", "Argument[0]", "remote", "manual"], + ["github.com/gin-gonic/gin", "Context", true, "BindUri", "", "", "Argument[0]", "remote", "manual"], + ["github.com/gin-gonic/gin", "Context", true, "BindWith", "", "", "Argument[0]", "remote", "manual"], + ["github.com/gin-gonic/gin", "Context", true, "ClientIP", "", "", "ReturnValue", "remote", "manual"], + ["github.com/gin-gonic/gin", "Context", true, "ContentType", "", "", "ReturnValue", "remote", "manual"], + ["github.com/gin-gonic/gin", "Context", true, "Cookie", "", "", "ReturnValue[0]", "remote", "manual"], + ["github.com/gin-gonic/gin", "Context", true, "DefaultPostForm", "", "", "ReturnValue", "remote", "manual"], + ["github.com/gin-gonic/gin", "Context", true, "DefaultQuery", "", "", "ReturnValue", "remote", "manual"], + ["github.com/gin-gonic/gin", "Context", true, "FullPath", "", "", "ReturnValue", "remote", "manual"], + ["github.com/gin-gonic/gin", "Context", true, "GetHeader", "", "", "ReturnValue", "remote", "manual"], + ["github.com/gin-gonic/gin", "Context", true, "GetPostForm", "", "", "ReturnValue[0]", "remote", "manual"], + ["github.com/gin-gonic/gin", "Context", true, "GetPostFormArray", "", "", "ReturnValue[0]", "remote", "manual"], // TODO: when sources can have access paths, use .ArrayElement + ["github.com/gin-gonic/gin", "Context", true, "GetPostFormMap", "", "", "ReturnValue[0]", "remote", "manual"], // TODO: when sources can have access paths, use .MapValue (and .MapKey?) + ["github.com/gin-gonic/gin", "Context", true, "GetQuery", "", "", "ReturnValue[0]", "remote", "manual"], + ["github.com/gin-gonic/gin", "Context", true, "GetQueryArray", "", "", "ReturnValue[0]", "remote", "manual"], // TODO: when sources can have access paths, use .ArrayElement + ["github.com/gin-gonic/gin", "Context", true, "GetQueryMap", "", "", "ReturnValue[0]", "remote", "manual"], // TODO: when sources can have access paths, use .MapValue (and .MapKey?) + ["github.com/gin-gonic/gin", "Context", true, "GetRawData", "", "", "ReturnValue[0]", "remote", "manual"], // TODO: when sources can have access paths, use .ArrayElement + ["github.com/gin-gonic/gin", "Context", true, "GetString", "", "", "ReturnValue", "remote", "manual"], + ["github.com/gin-gonic/gin", "Context", true, "GetStringMap", "", "", "ReturnValue", "remote", "manual"], // TODO: when sources can have access paths, use .MapValue (and .MapKey?) + ["github.com/gin-gonic/gin", "Context", true, "GetStringMapString", "", "", "ReturnValue", "remote", "manual"], // TODO: when sources can have access paths, use .MapValue (and .MapKey?) + ["github.com/gin-gonic/gin", "Context", true, "GetStringMapStringSlice", "", "", "ReturnValue", "remote", "manual"], // TODO: when sources can have access paths, use .MapValue.ArrayElement (and .MapKey?) + ["github.com/gin-gonic/gin", "Context", true, "GetStringSlice", "", "", "ReturnValue", "remote", "manual"], // TODO: when sources can have access paths, use .ArrayElement + ["github.com/gin-gonic/gin", "Context", true, "MustBindWith", "", "", "Argument[0]", "remote", "manual"], + ["github.com/gin-gonic/gin", "Context", true, "Param", "", "", "ReturnValue", "remote", "manual"], + ["github.com/gin-gonic/gin", "Context", true, "Params", "", "", "", "remote", "manual"], + ["github.com/gin-gonic/gin", "Context", true, "PostForm", "", "", "ReturnValue", "remote", "manual"], + ["github.com/gin-gonic/gin", "Context", true, "PostFormArray", "", "", "ReturnValue", "remote", "manual"], // TODO: when sources can have access paths, use .ArrayElement + ["github.com/gin-gonic/gin", "Context", true, "PostFormMap", "", "", "ReturnValue", "remote", "manual"], // TODO: when sources can have access paths, use .MapValue (and .MapKey?) + ["github.com/gin-gonic/gin", "Context", true, "Query", "", "", "ReturnValue", "remote", "manual"], + ["github.com/gin-gonic/gin", "Context", true, "QueryArray", "", "", "ReturnValue", "remote", "manual"], // TODO: when sources can have access paths, use .ArrayElement + ["github.com/gin-gonic/gin", "Context", true, "QueryMap", "", "", "ReturnValue", "remote", "manual"], // TODO: when sources can have access paths, use .MapValue (and .MapKey?) + ["github.com/gin-gonic/gin", "Context", true, "ShouldBind", "", "", "Argument[0]", "remote", "manual"], + ["github.com/gin-gonic/gin", "Context", true, "ShouldBindBodyWith", "", "", "Argument[0]", "remote", "manual"], + ["github.com/gin-gonic/gin", "Context", true, "ShouldBindHeader", "", "", "Argument[0]", "remote", "manual"], + ["github.com/gin-gonic/gin", "Context", true, "ShouldBindJSON", "", "", "Argument[0]", "remote", "manual"], + ["github.com/gin-gonic/gin", "Context", true, "ShouldBindQuery", "", "", "Argument[0]", "remote", "manual"], + ["github.com/gin-gonic/gin", "Context", true, "ShouldBindUri", "", "", "Argument[0]", "remote", "manual"], + ["github.com/gin-gonic/gin", "Context", true, "ShouldBindWith", "", "", "Argument[0]", "remote", "manual"], + ["github.com/gin-gonic/gin", "Context", true, "ShouldBindXML", "", "", "Argument[0]", "remote", "manual"], + ["github.com/gin-gonic/gin", "Context", true, "ShouldBindYAML", "", "", "Argument[0]", "remote", "manual"] + ] + } + ] +} diff --git a/go/ql/lib/ext/github.com.gin-gonic.gin.model.yml b/go/ql/lib/ext/github.com.gin-gonic.gin.model.yml deleted file mode 100644 index 92b1c757ac7a..000000000000 --- a/go/ql/lib/ext/github.com.gin-gonic.gin.model.yml +++ /dev/null @@ -1,64 +0,0 @@ -extensions: - - addsTo: - pack: codeql/go-all - extensible: sinkModel - data: - - ["github.com/gin-gonic/gin", "Context", True, "File", "", "", "Argument[0]", "path-injection", "manual"] - - ["github.com/gin-gonic/gin", "Context", True, "FileAttachment", "", "", "Argument[0]", "path-injection", "manual"] - - ["github.com/gin-gonic/gin", "Context", True, "SaveUploadedFile", "", "", "Argument[1]", "path-injection", "manual"] - - addsTo: - pack: codeql/go-all - extensible: summaryModel - data: - - ["github.com/gin-gonic/gin", "Params", True, "ByName", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] - - ["github.com/gin-gonic/gin", "Params", True, "Get", "", "", "Argument[receiver]", "ReturnValue[0]", "taint", "manual"] - - addsTo: - pack: codeql/go-all - extensible: sourceModel - data: - - ["github.com/gin-gonic/gin", "Context", True, "Accepted", "", "", "", "remote", "manual"] - - ["github.com/gin-gonic/gin", "Context", True, "Bind", "", "", "Argument[0]", "remote", "manual"] - - ["github.com/gin-gonic/gin", "Context", True, "BindHeader", "", "", "Argument[0]", "remote", "manual"] - - ["github.com/gin-gonic/gin", "Context", True, "BindJSON", "", "", "Argument[0]", "remote", "manual"] - - ["github.com/gin-gonic/gin", "Context", True, "BindQuery", "", "", "Argument[0]", "remote", "manual"] - - ["github.com/gin-gonic/gin", "Context", True, "BindXML", "", "", "Argument[0]", "remote", "manual"] - - ["github.com/gin-gonic/gin", "Context", True, "BindYAML", "", "", "Argument[0]", "remote", "manual"] - - ["github.com/gin-gonic/gin", "Context", True, "BindUri", "", "", "Argument[0]", "remote", "manual"] - - ["github.com/gin-gonic/gin", "Context", True, "BindWith", "", "", "Argument[0]", "remote", "manual"] - - ["github.com/gin-gonic/gin", "Context", True, "ClientIP", "", "", "ReturnValue", "remote", "manual"] - - ["github.com/gin-gonic/gin", "Context", True, "ContentType", "", "", "ReturnValue", "remote", "manual"] - - ["github.com/gin-gonic/gin", "Context", True, "Cookie", "", "", "ReturnValue[0]", "remote", "manual"] - - ["github.com/gin-gonic/gin", "Context", True, "DefaultPostForm", "", "", "ReturnValue", "remote", "manual"] - - ["github.com/gin-gonic/gin", "Context", True, "DefaultQuery", "", "", "ReturnValue", "remote", "manual"] - - ["github.com/gin-gonic/gin", "Context", True, "FullPath", "", "", "ReturnValue", "remote", "manual"] - - ["github.com/gin-gonic/gin", "Context", True, "GetHeader", "", "", "ReturnValue", "remote", "manual"] - - ["github.com/gin-gonic/gin", "Context", True, "GetPostForm", "", "", "ReturnValue[0]", "remote", "manual"] - - ["github.com/gin-gonic/gin", "Context", True, "GetPostFormArray", "", "", "ReturnValue[0]", "remote", "manual"] # TODO: when sources can have access paths, use .ArrayElement - - ["github.com/gin-gonic/gin", "Context", True, "GetPostFormMap", "", "", "ReturnValue[0]", "remote", "manual"] # TODO: when sources can have access paths, use .MapValue (and .MapKey?) - - ["github.com/gin-gonic/gin", "Context", True, "GetQuery", "", "", "ReturnValue[0]", "remote", "manual"] - - ["github.com/gin-gonic/gin", "Context", True, "GetQueryArray", "", "", "ReturnValue[0]", "remote", "manual"] # TODO: when sources can have access paths, use .ArrayElement - - ["github.com/gin-gonic/gin", "Context", True, "GetQueryMap", "", "", "ReturnValue[0]", "remote", "manual"] # TODO: when sources can have access paths, use .MapValue (and .MapKey?) - - ["github.com/gin-gonic/gin", "Context", True, "GetRawData", "", "", "ReturnValue[0]", "remote", "manual"] # TODO: when sources can have access paths, use .ArrayElement - - ["github.com/gin-gonic/gin", "Context", True, "GetString", "", "", "ReturnValue", "remote", "manual"] - - ["github.com/gin-gonic/gin", "Context", True, "GetStringMap", "", "", "ReturnValue", "remote", "manual"] # TODO: when sources can have access paths, use .MapValue (and .MapKey?) - - ["github.com/gin-gonic/gin", "Context", True, "GetStringMapString", "", "", "ReturnValue", "remote", "manual"] # TODO: when sources can have access paths, use .MapValue (and .MapKey?) - - ["github.com/gin-gonic/gin", "Context", True, "GetStringMapStringSlice", "", "", "ReturnValue", "remote", "manual"] # TODO: when sources can have access paths, use .MapValue.ArrayElement (and .MapKey?) - - ["github.com/gin-gonic/gin", "Context", True, "GetStringSlice", "", "", "ReturnValue", "remote", "manual"] # TODO: when sources can have access paths, use .ArrayElement - - ["github.com/gin-gonic/gin", "Context", True, "MustBindWith", "", "", "Argument[0]", "remote", "manual"] - - ["github.com/gin-gonic/gin", "Context", True, "Param", "", "", "ReturnValue", "remote", "manual"] - - ["github.com/gin-gonic/gin", "Context", True, "Params", "", "", "", "remote", "manual"] - - ["github.com/gin-gonic/gin", "Context", True, "PostForm", "", "", "ReturnValue", "remote", "manual"] - - ["github.com/gin-gonic/gin", "Context", True, "PostFormArray", "", "", "ReturnValue", "remote", "manual"] # TODO: when sources can have access paths, use .ArrayElement - - ["github.com/gin-gonic/gin", "Context", True, "PostFormMap", "", "", "ReturnValue", "remote", "manual"] # TODO: when sources can have access paths, use .MapValue (and .MapKey?) - - ["github.com/gin-gonic/gin", "Context", True, "Query", "", "", "ReturnValue", "remote", "manual"] - - ["github.com/gin-gonic/gin", "Context", True, "QueryArray", "", "", "ReturnValue", "remote", "manual"] # TODO: when sources can have access paths, use .ArrayElement - - ["github.com/gin-gonic/gin", "Context", True, "QueryMap", "", "", "ReturnValue", "remote", "manual"] # TODO: when sources can have access paths, use .MapValue (and .MapKey?) - - ["github.com/gin-gonic/gin", "Context", True, "ShouldBind", "", "", "Argument[0]", "remote", "manual"] - - ["github.com/gin-gonic/gin", "Context", True, "ShouldBindBodyWith", "", "", "Argument[0]", "remote", "manual"] - - ["github.com/gin-gonic/gin", "Context", True, "ShouldBindHeader", "", "", "Argument[0]", "remote", "manual"] - - ["github.com/gin-gonic/gin", "Context", True, "ShouldBindJSON", "", "", "Argument[0]", "remote", "manual"] - - ["github.com/gin-gonic/gin", "Context", True, "ShouldBindQuery", "", "", "Argument[0]", "remote", "manual"] - - ["github.com/gin-gonic/gin", "Context", True, "ShouldBindUri", "", "", "Argument[0]", "remote", "manual"] - - ["github.com/gin-gonic/gin", "Context", True, "ShouldBindWith", "", "", "Argument[0]", "remote", "manual"] - - ["github.com/gin-gonic/gin", "Context", True, "ShouldBindXML", "", "", "Argument[0]", "remote", "manual"] - - ["github.com/gin-gonic/gin", "Context", True, "ShouldBindYAML", "", "", "Argument[0]", "remote", "manual"] diff --git a/go/ql/lib/ext/github.com.go-chi.chi.model.json b/go/ql/lib/ext/github.com.go-chi.chi.model.json new file mode 100644 index 000000000000..47c381889177 --- /dev/null +++ b/go/ql/lib/ext/github.com.go-chi.chi.model.json @@ -0,0 +1,15 @@ +{ + "extensions": [ + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "sourceModel" + }, + "data": [ + ["github.com/go-chi/chi", "", false, "URLParam", "", "", "ReturnValue", "remote", "manual"], + ["github.com/go-chi/chi", "", false, "URLParamFromCtx", "", "", "ReturnValue", "remote", "manual"], + ["github.com/go-chi/chi", "Context", true, "URLParam", "", "", "ReturnValue", "remote", "manual"] + ] + } + ] +} diff --git a/go/ql/lib/ext/github.com.go-chi.chi.model.yml b/go/ql/lib/ext/github.com.go-chi.chi.model.yml deleted file mode 100644 index c24e7ab2b4a2..000000000000 --- a/go/ql/lib/ext/github.com.go-chi.chi.model.yml +++ /dev/null @@ -1,8 +0,0 @@ -extensions: - - addsTo: - pack: codeql/go-all - extensible: sourceModel - data: - - ["github.com/go-chi/chi", "", False, "URLParam", "", "", "ReturnValue", "remote", "manual"] - - ["github.com/go-chi/chi", "", False, "URLParamFromCtx", "", "", "ReturnValue", "remote", "manual"] - - ["github.com/go-chi/chi", "Context", True, "URLParam", "", "", "ReturnValue", "remote", "manual"] diff --git a/go/ql/lib/ext/github.com.go-chi.jwtauth.model.json b/go/ql/lib/ext/github.com.go-chi.jwtauth.model.json new file mode 100644 index 000000000000..9e2171dc8650 --- /dev/null +++ b/go/ql/lib/ext/github.com.go-chi.jwtauth.model.json @@ -0,0 +1,13 @@ +{ + "extensions": [ + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "sinkModel" + }, + "data": [ + ["github.com/go-chi/jwtauth", "", false, "New", "", "", "Argument[1]", "credentials-key", "manual"] + ] + } + ] +} diff --git a/go/ql/lib/ext/github.com.go-chi.jwtauth.model.yml b/go/ql/lib/ext/github.com.go-chi.jwtauth.model.yml deleted file mode 100644 index 7cfb1ff80f51..000000000000 --- a/go/ql/lib/ext/github.com.go-chi.jwtauth.model.yml +++ /dev/null @@ -1,6 +0,0 @@ -extensions: - - addsTo: - pack: codeql/go-all - extensible: sinkModel - data: - - ["github.com/go-chi/jwtauth", "", False, "New", "", "", "Argument[1]", "credentials-key", "manual"] diff --git a/go/ql/lib/ext/github.com.go-jose.go-jose.jwt.model.json b/go/ql/lib/ext/github.com.go-jose.go-jose.jwt.model.json new file mode 100644 index 000000000000..4c310033b8b3 --- /dev/null +++ b/go/ql/lib/ext/github.com.go-jose.go-jose.jwt.model.json @@ -0,0 +1,37 @@ +{ + "extensions": [ + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "packageGrouping" + }, + "data": [ + ["go-jose/jwt", "gopkg.in/square/go-jose/jwt"], + ["go-jose/jwt", "gopkg.in/go-jose/go-jose/jwt"], + ["go-jose/jwt", "github.com/square/go-jose/jwt"], + ["go-jose/jwt", "github.com/go-jose/go-jose/jwt"] + ] + }, + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "sinkModel" + }, + "data": [ + ["group:go-jose/jwt", "JSONWebToken", true, "UnsafeClaimsWithoutVerification", "", "", "Argument[receiver]", "jwt", "manual"] + ] + }, + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "summaryModel" + }, + "data": [ + ["group:go-jose/jwt", "", false, "ParseEncrypted", "", "", "Argument[0]", "ReturnValue[0]", "taint", "manual"], + ["group:go-jose/jwt", "", false, "ParseSigned", "", "", "Argument[0]", "ReturnValue[0]", "taint", "manual"], + ["group:go-jose/jwt", "NestedJSONWebToken", true, "ParseSignedAndEncrypted", "", "", "Argument[0]", "ReturnValue[0]", "taint", "manual"], + ["group:go-jose/jwt", "NestedJSONWebToken", true, "Decrypt", "", "", "Argument[receiver]", "ReturnValue[0]", "taint", "manual"] + ] + } + ] +} diff --git a/go/ql/lib/ext/github.com.go-jose.go-jose.jwt.model.yml b/go/ql/lib/ext/github.com.go-jose.go-jose.jwt.model.yml deleted file mode 100644 index ba06d21a93ef..000000000000 --- a/go/ql/lib/ext/github.com.go-jose.go-jose.jwt.model.yml +++ /dev/null @@ -1,22 +0,0 @@ -extensions: - - addsTo: - pack: codeql/go-all - extensible: packageGrouping - data: - - ["go-jose/jwt", "gopkg.in/square/go-jose/jwt"] - - ["go-jose/jwt", "gopkg.in/go-jose/go-jose/jwt"] - - ["go-jose/jwt", "github.com/square/go-jose/jwt"] - - ["go-jose/jwt", "github.com/go-jose/go-jose/jwt"] - - addsTo: - pack: codeql/go-all - extensible: sinkModel - data: - - ["group:go-jose/jwt", "JSONWebToken", True, "UnsafeClaimsWithoutVerification", "", "", "Argument[receiver]", "jwt", "manual"] - - addsTo: - pack: codeql/go-all - extensible: summaryModel - data: - - ["group:go-jose/jwt", "", False, "ParseEncrypted", "", "", "Argument[0]", "ReturnValue[0]", "taint", "manual"] - - ["group:go-jose/jwt", "", False, "ParseSigned", "", "", "Argument[0]", "ReturnValue[0]", "taint", "manual"] - - ["group:go-jose/jwt", "NestedJSONWebToken", True, "ParseSignedAndEncrypted", "", "", "Argument[0]", "ReturnValue[0]", "taint", "manual"] - - ["group:go-jose/jwt", "NestedJSONWebToken", True, "Decrypt", "", "", "Argument[receiver]", "ReturnValue[0]", "taint", "manual"] diff --git a/go/ql/lib/ext/github.com.go-jose.go-jose.model.json b/go/ql/lib/ext/github.com.go-jose.go-jose.model.json new file mode 100644 index 000000000000..16382dc8d5c5 --- /dev/null +++ b/go/ql/lib/ext/github.com.go-jose.go-jose.model.json @@ -0,0 +1,26 @@ +{ + "extensions": [ + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "packageGrouping" + }, + "data": [ + ["go-jose", "gopkg.in/square/go-jose"], + ["go-jose", "gopkg.in/go-jose/go-jose"], + ["go-jose", "github.com/square/go-jose"], + ["go-jose", "github.com/go-jose/go-jose"] + ] + }, + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "sinkModel" + }, + "data": [ + ["group:go-jose", "Recipient", true, "Key", "", "", "", "credentials-key", "manual"], + ["group:go-jose", "SigningKey", true, "Key", "", "", "", "credentials-key", "manual"] + ] + } + ] +} diff --git a/go/ql/lib/ext/github.com.go-jose.go-jose.model.yml b/go/ql/lib/ext/github.com.go-jose.go-jose.model.yml deleted file mode 100644 index a27073d872e5..000000000000 --- a/go/ql/lib/ext/github.com.go-jose.go-jose.model.yml +++ /dev/null @@ -1,15 +0,0 @@ -extensions: - - addsTo: - pack: codeql/go-all - extensible: packageGrouping - data: - - ["go-jose", "gopkg.in/square/go-jose"] - - ["go-jose", "gopkg.in/go-jose/go-jose"] - - ["go-jose", "github.com/square/go-jose"] - - ["go-jose", "github.com/go-jose/go-jose"] - - addsTo: - pack: codeql/go-all - extensible: sinkModel - data: - - ["group:go-jose", "Recipient", True, "Key", "", "", "", "credentials-key", "manual"] - - ["group:go-jose", "SigningKey", True, "Key", "", "", "", "credentials-key", "manual"] diff --git a/go/ql/lib/ext/github.com.go-kit.kit.auth.jwt.model.json b/go/ql/lib/ext/github.com.go-kit.kit.auth.jwt.model.json new file mode 100644 index 000000000000..a385f1ff3e12 --- /dev/null +++ b/go/ql/lib/ext/github.com.go-kit.kit.auth.jwt.model.json @@ -0,0 +1,13 @@ +{ + "extensions": [ + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "sinkModel" + }, + "data": [ + ["github.com/go-kit/kit/auth/jwt", "", false, "NewSigner", "", "", "Argument[1]", "credentials-key", "manual"] + ] + } + ] +} diff --git a/go/ql/lib/ext/github.com.go-kit.kit.auth.jwt.model.yml b/go/ql/lib/ext/github.com.go-kit.kit.auth.jwt.model.yml deleted file mode 100644 index 7a9da5bd4b06..000000000000 --- a/go/ql/lib/ext/github.com.go-kit.kit.auth.jwt.model.yml +++ /dev/null @@ -1,6 +0,0 @@ -extensions: - - addsTo: - pack: codeql/go-all - extensible: sinkModel - data: - - ["github.com/go-kit/kit/auth/jwt", "", False, "NewSigner", "", "", "Argument[1]", "credentials-key", "manual"] diff --git a/go/ql/lib/ext/github.com.go-pg.pg.orm.model.json b/go/ql/lib/ext/github.com.go-pg.pg.orm.model.json new file mode 100644 index 000000000000..9289f55cc3df --- /dev/null +++ b/go/ql/lib/ext/github.com.go-pg.pg.orm.model.json @@ -0,0 +1,18 @@ +{ + "extensions": [ + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "summaryModel" + }, + "data": [ + ["github.com/go-pg/pg/orm", "Formatter", true, "Append", "", "", "Argument[1]", "ReturnValue", "taint", "manual"], + ["github.com/go-pg/pg/orm", "Formatter", true, "Append", "", "", "Argument[1]", "Argument[0]", "taint", "manual"], + ["github.com/go-pg/pg/orm", "Formatter", true, "AppendBytes", "", "", "Argument[1]", "ReturnValue", "taint", "manual"], + ["github.com/go-pg/pg/orm", "Formatter", true, "AppendBytes", "", "", "Argument[1]", "Argument[0]", "taint", "manual"], + ["github.com/go-pg/pg/orm", "Formatter", true, "FormatQuery", "", "", "Argument[1]", "ReturnValue", "taint", "manual"], + ["github.com/go-pg/pg/orm", "Formatter", true, "FormatQuery", "", "", "Argument[1]", "Argument[0]", "taint", "manual"] + ] + } + ] +} diff --git a/go/ql/lib/ext/github.com.go-pg.pg.orm.model.yml b/go/ql/lib/ext/github.com.go-pg.pg.orm.model.yml deleted file mode 100644 index 3c926992721b..000000000000 --- a/go/ql/lib/ext/github.com.go-pg.pg.orm.model.yml +++ /dev/null @@ -1,11 +0,0 @@ -extensions: - - addsTo: - pack: codeql/go-all - extensible: summaryModel - data: - - ["github.com/go-pg/pg/orm", "Formatter", True, "Append", "", "", "Argument[1]", "ReturnValue", "taint", "manual"] - - ["github.com/go-pg/pg/orm", "Formatter", True, "Append", "", "", "Argument[1]", "Argument[0]", "taint", "manual"] - - ["github.com/go-pg/pg/orm", "Formatter", True, "AppendBytes", "", "", "Argument[1]", "ReturnValue", "taint", "manual"] - - ["github.com/go-pg/pg/orm", "Formatter", True, "AppendBytes", "", "", "Argument[1]", "Argument[0]", "taint", "manual"] - - ["github.com/go-pg/pg/orm", "Formatter", True, "FormatQuery", "", "", "Argument[1]", "ReturnValue", "taint", "manual"] - - ["github.com/go-pg/pg/orm", "Formatter", True, "FormatQuery", "", "", "Argument[1]", "Argument[0]", "taint", "manual"] diff --git a/go/ql/lib/ext/github.com.go-xmlpath.xmlpath.model.json b/go/ql/lib/ext/github.com.go-xmlpath.xmlpath.model.json new file mode 100644 index 000000000000..f93cb567cf7f --- /dev/null +++ b/go/ql/lib/ext/github.com.go-xmlpath.xmlpath.model.json @@ -0,0 +1,29 @@ +{ + "extensions": [ + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "packageGrouping" + }, + "data": [ + ["xmlpath", "gopkg.in/xmlpath"], + ["xmlpath", "github.com/go-xmlpath/xmlpath"], + ["xmlpath", "github.com/crankycoder/xmlpath"], + ["xmlpath", "launchpad.net/xmlpath"], + ["xmlpath", "github.com/masterzen/xmlpath"], + ["xmlpath", "github.com/going/toolkit/xmlpath"], + ["xmlpath", "gopkg.in/go-xmlpath/xmlpath"] + ] + }, + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "sinkModel" + }, + "data": [ + ["group:xmlpath", "", false, "Compile", "", "", "Argument[0]", "xpath-injection", "manual"], + ["group:xmlpath", "", false, "MustCompile", "", "", "Argument[0]", "xpath-injection", "manual"] + ] + } + ] +} diff --git a/go/ql/lib/ext/github.com.go-xmlpath.xmlpath.model.yml b/go/ql/lib/ext/github.com.go-xmlpath.xmlpath.model.yml deleted file mode 100644 index 931e65f18326..000000000000 --- a/go/ql/lib/ext/github.com.go-xmlpath.xmlpath.model.yml +++ /dev/null @@ -1,18 +0,0 @@ -extensions: - - addsTo: - pack: codeql/go-all - extensible: packageGrouping - data: - - ["xmlpath", "gopkg.in/xmlpath"] - - ["xmlpath", "github.com/go-xmlpath/xmlpath"] - - ["xmlpath", "github.com/crankycoder/xmlpath"] - - ["xmlpath", "launchpad.net/xmlpath"] - - ["xmlpath", "github.com/masterzen/xmlpath"] - - ["xmlpath", "github.com/going/toolkit/xmlpath"] - - ["xmlpath", "gopkg.in/go-xmlpath/xmlpath"] - - addsTo: - pack: codeql/go-all - extensible: sinkModel - data: - - ["group:xmlpath", "", False, "Compile", "", "", "Argument[0]", "xpath-injection", "manual"] - - ["group:xmlpath", "", False, "MustCompile", "", "", "Argument[0]", "xpath-injection", "manual"] diff --git a/go/ql/lib/ext/github.com.gobuffalo.envy.model.json b/go/ql/lib/ext/github.com.gobuffalo.envy.model.json new file mode 100644 index 000000000000..d5956c16ab43 --- /dev/null +++ b/go/ql/lib/ext/github.com.gobuffalo.envy.model.json @@ -0,0 +1,19 @@ +{ + "extensions": [ + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "sourceModel" + }, + "data": [ + ["github.com/gobuffalo/envy", "", false, "Environ", "", "", "ReturnValue", "environment", "manual"], + ["github.com/gobuffalo/envy", "", false, "Get", "", "", "ReturnValue", "environment", "manual"], + ["github.com/gobuffalo/envy", "", false, "GoBin", "", "", "ReturnValue", "environment", "manual"], + ["github.com/gobuffalo/envy", "", false, "GoPath", "", "", "ReturnValue", "environment", "manual"], + ["github.com/gobuffalo/envy", "", false, "GoPaths", "", "", "ReturnValue", "environment", "manual"], + ["github.com/gobuffalo/envy", "", false, "Map", "", "", "ReturnValue", "environment", "manual"], + ["github.com/gobuffalo/envy", "", false, "MustGet", "", "", "ReturnValue[0]", "environment", "manual"] + ] + } + ] +} diff --git a/go/ql/lib/ext/github.com.gobuffalo.envy.model.yml b/go/ql/lib/ext/github.com.gobuffalo.envy.model.yml deleted file mode 100644 index 1d0d890560d9..000000000000 --- a/go/ql/lib/ext/github.com.gobuffalo.envy.model.yml +++ /dev/null @@ -1,12 +0,0 @@ -extensions: - - addsTo: - pack: codeql/go-all - extensible: sourceModel - data: - - ["github.com/gobuffalo/envy", "", False, "Environ", "", "", "ReturnValue", "environment", "manual"] - - ["github.com/gobuffalo/envy", "", False, "Get", "", "", "ReturnValue", "environment", "manual"] - - ["github.com/gobuffalo/envy", "", False, "GoBin", "", "", "ReturnValue", "environment", "manual"] - - ["github.com/gobuffalo/envy", "", False, "GoPath", "", "", "ReturnValue", "environment", "manual"] - - ["github.com/gobuffalo/envy", "", False, "GoPaths", "", "", "ReturnValue", "environment", "manual"] - - ["github.com/gobuffalo/envy", "", False, "Map", "", "", "ReturnValue", "environment", "manual"] - - ["github.com/gobuffalo/envy", "", False, "MustGet", "", "", "ReturnValue[0]", "environment", "manual"] diff --git a/go/ql/lib/ext/github.com.gobwas.ws.model.json b/go/ql/lib/ext/github.com.gobwas.ws.model.json new file mode 100644 index 000000000000..f102aea423d0 --- /dev/null +++ b/go/ql/lib/ext/github.com.gobwas.ws.model.json @@ -0,0 +1,14 @@ +{ + "extensions": [ + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "sourceModel" + }, + "data": [ + ["github.com/gobwas/ws", "", false, "ReadFrame", "", "", "ReturnValue[0]", "remote", "manual"], + ["github.com/gobwas/ws", "", false, "ReadHeader", "", "", "ReturnValue[0]", "remote", "manual"] + ] + } + ] +} diff --git a/go/ql/lib/ext/github.com.gobwas.ws.model.yml b/go/ql/lib/ext/github.com.gobwas.ws.model.yml deleted file mode 100644 index fcaaee08d912..000000000000 --- a/go/ql/lib/ext/github.com.gobwas.ws.model.yml +++ /dev/null @@ -1,7 +0,0 @@ -extensions: - - addsTo: - pack: codeql/go-all - extensible: sourceModel - data: - - ["github.com/gobwas/ws", "", False, "ReadFrame", "", "", "ReturnValue[0]", "remote", "manual"] - - ["github.com/gobwas/ws", "", False, "ReadHeader", "", "", "ReturnValue[0]", "remote", "manual"] diff --git a/go/ql/lib/ext/github.com.gofiber.fiber.model.json b/go/ql/lib/ext/github.com.gofiber.fiber.model.json new file mode 100644 index 000000000000..4e4e28e85526 --- /dev/null +++ b/go/ql/lib/ext/github.com.gofiber.fiber.model.json @@ -0,0 +1,19 @@ +{ + "extensions": [ + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "sinkModel" + }, + "data": [ + // path-injection + ["github.com/gofiber/fiber", "Ctx", true, "SendFile", "", "", "Argument[0]", "path-injection", "manual"], + ["github.com/gofiber/fiber", "Ctx", true, "Download", "", "", "Argument[0]", "path-injection", "manual"], + ["github.com/gofiber/fiber", "Ctx", true, "SaveFile", "", "", "Argument[1]", "path-injection", "manual"], + ["github.com/gofiber/fiber", "Ctx", true, "SaveFileToStorage", "", "", "Argument[1]", "path-injection", "manual"], // does not exist in v1 + // url-redirection + ["github.com/gofiber/fiber", "Ctx", true, "Redirect", "", "", "Argument[0]", "url-redirection[receiver]", "manual"] + ] + } + ] +} diff --git a/go/ql/lib/ext/github.com.gofiber.fiber.model.yml b/go/ql/lib/ext/github.com.gofiber.fiber.model.yml deleted file mode 100644 index c959d137301f..000000000000 --- a/go/ql/lib/ext/github.com.gofiber.fiber.model.yml +++ /dev/null @@ -1,12 +0,0 @@ -extensions: - - addsTo: - pack: codeql/go-all - extensible: sinkModel - data: - # path-injection - - ["github.com/gofiber/fiber", "Ctx", True, "SendFile", "", "", "Argument[0]", "path-injection", "manual"] - - ["github.com/gofiber/fiber", "Ctx", True, "Download", "", "", "Argument[0]", "path-injection", "manual"] - - ["github.com/gofiber/fiber", "Ctx", True, "SaveFile", "", "", "Argument[1]", "path-injection", "manual"] - - ["github.com/gofiber/fiber", "Ctx", True, "SaveFileToStorage", "", "", "Argument[1]", "path-injection", "manual"] # does not exist in v1 - # url-redirection - - ["github.com/gofiber/fiber", "Ctx", True, "Redirect", "", "", "Argument[0]", "url-redirection[receiver]", "manual"] diff --git a/go/ql/lib/ext/github.com.gogf.gf-jwt.model.json b/go/ql/lib/ext/github.com.gogf.gf-jwt.model.json new file mode 100644 index 000000000000..b3396c4459de --- /dev/null +++ b/go/ql/lib/ext/github.com.gogf.gf-jwt.model.json @@ -0,0 +1,13 @@ +{ + "extensions": [ + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "sinkModel" + }, + "data": [ + ["github.com/gogf/gf-jwt", "GfJWTMiddleware", true, "Key", "", "", "", "credentials-key", "manual"] + ] + } + ] +} diff --git a/go/ql/lib/ext/github.com.gogf.gf-jwt.model.yml b/go/ql/lib/ext/github.com.gogf.gf-jwt.model.yml deleted file mode 100644 index fd98d1446e2b..000000000000 --- a/go/ql/lib/ext/github.com.gogf.gf-jwt.model.yml +++ /dev/null @@ -1,6 +0,0 @@ -extensions: - - addsTo: - pack: codeql/go-all - extensible: sinkModel - data: - - ["github.com/gogf/gf-jwt", "GfJWTMiddleware", True, "Key", "", "", "", "credentials-key", "manual"] diff --git a/go/ql/lib/ext/github.com.gogf.gf.database.gdb.model.json b/go/ql/lib/ext/github.com.gogf.gf.database.gdb.model.json new file mode 100644 index 000000000000..4018caff5a4b --- /dev/null +++ b/go/ql/lib/ext/github.com.gogf.gf.database.gdb.model.json @@ -0,0 +1,141 @@ +{ + "extensions": [ + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "sinkModel" + }, + "data": [ + // These models are for v1. Some of them hold for v2, but we should model v2 properly. + ["github.com/gogf/gf/database/gdb", "Core", true, "DoCommit", "", "", "Argument[2]", "sql-injection", "manual"], + ["github.com/gogf/gf/database/gdb", "Core", true, "DoExec", "", "", "Argument[2]", "sql-injection", "manual"], + ["github.com/gogf/gf/database/gdb", "Core", true, "DoGetAll", "", "", "Argument[2]", "sql-injection", "manual"], + ["github.com/gogf/gf/database/gdb", "Core", true, "DoQuery", "", "", "Argument[2]", "sql-injection", "manual"], + ["github.com/gogf/gf/database/gdb", "Core", true, "DoPrepare", "", "", "Argument[2]", "sql-injection", "manual"], + ["github.com/gogf/gf/database/gdb", "Core", true, "Exec", "", "", "Argument[0]", "sql-injection", "manual"], + ["github.com/gogf/gf/database/gdb", "Core", true, "GetAll", "", "", "Argument[0]", "sql-injection", "manual"], + ["github.com/gogf/gf/database/gdb", "Core", true, "GetArray", "", "", "Argument[0]", "sql-injection", "manual"], + ["github.com/gogf/gf/database/gdb", "Core", true, "GetCount", "", "", "Argument[0]", "sql-injection", "manual"], + ["github.com/gogf/gf/database/gdb", "Core", true, "GetOne", "", "", "Argument[0]", "sql-injection", "manual"], + ["github.com/gogf/gf/database/gdb", "Core", true, "GetScan", "", "", "Argument[1]", "sql-injection", "manual"], + ["github.com/gogf/gf/database/gdb", "Core", true, "GetStruct", "", "", "Argument[1]", "sql-injection", "manual"], + ["github.com/gogf/gf/database/gdb", "Core", true, "GetStructs", "", "", "Argument[1]", "sql-injection", "manual"], + ["github.com/gogf/gf/database/gdb", "Core", true, "GetValue", "", "", "Argument[0]", "sql-injection", "manual"], + ["github.com/gogf/gf/database/gdb", "Core", true, "Prepare", "", "", "Argument[0]", "sql-injection", "manual"], + ["github.com/gogf/gf/database/gdb", "Core", true, "Query", "", "", "Argument[0]", "sql-injection", "manual"], + ["github.com/gogf/gf/database/gdb", "Core", true, "Raw", "", "", "Argument[0]", "sql-injection", "manual"], + ["github.com/gogf/gf/database/gdb", "DB", true, "DoCommit", "", "", "Argument[2]", "sql-injection", "manual"], + ["github.com/gogf/gf/database/gdb", "DB", true, "DoExec", "", "", "Argument[2]", "sql-injection", "manual"], + ["github.com/gogf/gf/database/gdb", "DB", true, "DoGetAll", "", "", "Argument[2]", "sql-injection", "manual"], + ["github.com/gogf/gf/database/gdb", "DB", true, "DoQuery", "", "", "Argument[2]", "sql-injection", "manual"], + ["github.com/gogf/gf/database/gdb", "DB", true, "DoPrepare", "", "", "Argument[2]", "sql-injection", "manual"], + ["github.com/gogf/gf/database/gdb", "DB", true, "Exec", "", "", "Argument[0]", "sql-injection", "manual"], + ["github.com/gogf/gf/database/gdb", "DB", true, "GetAll", "", "", "Argument[0]", "sql-injection", "manual"], + ["github.com/gogf/gf/database/gdb", "DB", true, "GetArray", "", "", "Argument[0]", "sql-injection", "manual"], + ["github.com/gogf/gf/database/gdb", "DB", true, "GetCount", "", "", "Argument[0]", "sql-injection", "manual"], + ["github.com/gogf/gf/database/gdb", "DB", true, "GetOne", "", "", "Argument[0]", "sql-injection", "manual"], + ["github.com/gogf/gf/database/gdb", "DB", true, "GetScan", "", "", "Argument[1]", "sql-injection", "manual"], + ["github.com/gogf/gf/database/gdb", "DB", true, "GetStruct", "", "", "Argument[1]", "sql-injection", "manual"], + ["github.com/gogf/gf/database/gdb", "DB", true, "GetStructs", "", "", "Argument[1]", "sql-injection", "manual"], + ["github.com/gogf/gf/database/gdb", "DB", true, "GetValue", "", "", "Argument[0]", "sql-injection", "manual"], + ["github.com/gogf/gf/database/gdb", "DB", true, "Prepare", "", "", "Argument[0]", "sql-injection", "manual"], + ["github.com/gogf/gf/database/gdb", "DB", true, "Query", "", "", "Argument[0]", "sql-injection", "manual"], + ["github.com/gogf/gf/database/gdb", "DB", true, "Raw", "", "", "Argument[0]", "sql-injection", "manual"], + ["github.com/gogf/gf/database/gdb", "Tx", true, "DoCommit", "", "", "Argument[2]", "sql-injection", "manual"], + ["github.com/gogf/gf/database/gdb", "Tx", true, "DoExec", "", "", "Argument[2]", "sql-injection", "manual"], + ["github.com/gogf/gf/database/gdb", "Tx", true, "DoGetAll", "", "", "Argument[2]", "sql-injection", "manual"], + ["github.com/gogf/gf/database/gdb", "Tx", true, "DoQuery", "", "", "Argument[2]", "sql-injection", "manual"], + ["github.com/gogf/gf/database/gdb", "Tx", true, "DoPrepare", "", "", "Argument[2]", "sql-injection", "manual"], + ["github.com/gogf/gf/database/gdb", "Tx", true, "Exec", "", "", "Argument[0]", "sql-injection", "manual"], + ["github.com/gogf/gf/database/gdb", "Tx", true, "GetAll", "", "", "Argument[0]", "sql-injection", "manual"], + ["github.com/gogf/gf/database/gdb", "Tx", true, "GetArray", "", "", "Argument[0]", "sql-injection", "manual"], + ["github.com/gogf/gf/database/gdb", "Tx", true, "GetCount", "", "", "Argument[0]", "sql-injection", "manual"], + ["github.com/gogf/gf/database/gdb", "Tx", true, "GetOne", "", "", "Argument[0]", "sql-injection", "manual"], + ["github.com/gogf/gf/database/gdb", "Tx", true, "GetScan", "", "", "Argument[1]", "sql-injection", "manual"], + ["github.com/gogf/gf/database/gdb", "Tx", true, "GetStruct", "", "", "Argument[1]", "sql-injection", "manual"], + ["github.com/gogf/gf/database/gdb", "Tx", true, "GetStructs", "", "", "Argument[1]", "sql-injection", "manual"], + ["github.com/gogf/gf/database/gdb", "Tx", true, "GetValue", "", "", "Argument[0]", "sql-injection", "manual"], + ["github.com/gogf/gf/database/gdb", "Tx", true, "Prepare", "", "", "Argument[0]", "sql-injection", "manual"], + ["github.com/gogf/gf/database/gdb", "Tx", true, "Query", "", "", "Argument[0]", "sql-injection", "manual"], + ["github.com/gogf/gf/database/gdb", "Tx", true, "Raw", "", "", "Argument[0]", "sql-injection", "manual"] + ] + }, + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "sourceModel" + }, + "data": [ + // These models are for v1. Some of them hold for v2, but we should model v2 properly. + ["github.com/gogf/gf/database/gdb", "Core", true, "DoGetAll", "", "", "ReturnValue[0]", "database", "manual"], + ["github.com/gogf/gf/database/gdb", "Core", true, "DoQuery", "", "", "ReturnValue[0]", "database", "manual"], + ["github.com/gogf/gf/database/gdb", "Core", true, "GetAll", "", "", "ReturnValue[0]", "database", "manual"], + ["github.com/gogf/gf/database/gdb", "Core", true, "GetArray", "", "", "ReturnValue[0]", "database", "manual"], + ["github.com/gogf/gf/database/gdb", "Core", true, "GetOne", "", "", "ReturnValue[0]", "database", "manual"], + ["github.com/gogf/gf/database/gdb", "Core", true, "GetScan", "", "", "Argument[0]", "database", "manual"], + ["github.com/gogf/gf/database/gdb", "Core", true, "GetStruct", "", "", "Argument[0]", "database", "manual"], + ["github.com/gogf/gf/database/gdb", "Core", true, "GetStructs", "", "", "Argument[0]", "database", "manual"], + ["github.com/gogf/gf/database/gdb", "Core", true, "GetValue", "", "", "ReturnValue[0]", "database", "manual"], + ["github.com/gogf/gf/database/gdb", "Core", true, "Query", "", "", "ReturnValue[0]", "database", "manual"], + ["github.com/gogf/gf/database/gdb", "DB", true, "DoGetAll", "", "", "ReturnValue[0]", "database", "manual"], + ["github.com/gogf/gf/database/gdb", "DB", true, "DoQuery", "", "", "ReturnValue[0]", "database", "manual"], + ["github.com/gogf/gf/database/gdb", "DB", true, "GetAll", "", "", "ReturnValue[0]", "database", "manual"], + ["github.com/gogf/gf/database/gdb", "DB", true, "GetArray", "", "", "ReturnValue[0]", "database", "manual"], + ["github.com/gogf/gf/database/gdb", "DB", true, "GetOne", "", "", "ReturnValue[0]", "database", "manual"], + ["github.com/gogf/gf/database/gdb", "DB", true, "GetScan", "", "", "Argument[0]", "database", "manual"], + ["github.com/gogf/gf/database/gdb", "DB", true, "GetValue", "", "", "ReturnValue[0]", "database", "manual"], + ["github.com/gogf/gf/database/gdb", "DB", true, "Query", "", "", "ReturnValue[0]", "database", "manual"], + ["github.com/gogf/gf/database/gdb", "Model", true, "All", "", "", "ReturnValue[0]", "database", "manual"], + ["github.com/gogf/gf/database/gdb", "Model", true, "Array", "", "", "ReturnValue[0]", "database", "manual"], + ["github.com/gogf/gf/database/gdb", "Model", true, "FindAll", "", "", "ReturnValue[0]", "database", "manual"], + ["github.com/gogf/gf/database/gdb", "Model", true, "FindArray", "", "", "ReturnValue[0]", "database", "manual"], + ["github.com/gogf/gf/database/gdb", "Model", true, "FindOne", "", "", "ReturnValue[0]", "database", "manual"], + ["github.com/gogf/gf/database/gdb", "Model", true, "FindScan", "", "", "Argument[0]", "database", "manual"], + ["github.com/gogf/gf/database/gdb", "Model", true, "FindValue", "", "", "ReturnValue[0]", "database", "manual"], + ["github.com/gogf/gf/database/gdb", "Model", true, "One", "", "", "ReturnValue[0]", "database", "manual"], + ["github.com/gogf/gf/database/gdb", "Model", true, "Scan", "", "", "Argument[0]", "database", "manual"], + ["github.com/gogf/gf/database/gdb", "Model", true, "ScanList", "", "", "Argument[0]", "database", "manual"], + ["github.com/gogf/gf/database/gdb", "Model", true, "Select", "", "", "ReturnValue[0]", "database", "manual"], + ["github.com/gogf/gf/database/gdb", "Model", true, "Struct", "", "", "Argument[0]", "database", "manual"], + ["github.com/gogf/gf/database/gdb", "Model", true, "Structs", "", "", "Argument[0]", "database", "manual"], + ["github.com/gogf/gf/database/gdb", "Model", true, "Value", "", "", "ReturnValue[0]", "database", "manual"], + ["github.com/gogf/gf/database/gdb", "TX", true, "GetAll", "", "", "ReturnValue[0]", "database", "manual"], + ["github.com/gogf/gf/database/gdb", "TX", true, "GetOne", "", "", "ReturnValue[0]", "database", "manual"], + ["github.com/gogf/gf/database/gdb", "TX", true, "GetScan", "", "", "Argument[0]", "database", "manual"], + ["github.com/gogf/gf/database/gdb", "TX", true, "GetStruct", "", "", "Argument[0]", "database", "manual"], + ["github.com/gogf/gf/database/gdb", "TX", true, "GetStructs", "", "", "Argument[0]", "database", "manual"], + ["github.com/gogf/gf/database/gdb", "TX", true, "GetValue", "", "", "ReturnValue[0]", "database", "manual"], + ["github.com/gogf/gf/database/gdb", "TX", true, "Query", "", "", "ReturnValue[0]", "database", "manual"] + ] + }, + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "summaryModel" + }, + "data": [ + ["github.com/gogf/gf/database/gdb", "Record", true, "GMap", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"], + ["github.com/gogf/gf/database/gdb", "Record", true, "Interface", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"], + ["github.com/gogf/gf/database/gdb", "Record", true, "Json", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"], + ["github.com/gogf/gf/database/gdb", "Record", true, "Map", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"], + ["github.com/gogf/gf/database/gdb", "Record", true, "Struct", "", "", "Argument[receiver]", "Argument[0]", "taint", "manual"], + ["github.com/gogf/gf/database/gdb", "Record", true, "Xml", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"], + ["github.com/gogf/gf/database/gdb", "Result", true, "Array", "", "", "Argument[receiver]", "ReturnValue.ArrayElement", "taint", "manual"], + ["github.com/gogf/gf/database/gdb", "Result", true, "Chunk", "", "", "Argument[receiver]", "ReturnValue.ArrayElement", "taint", "manual"], + ["github.com/gogf/gf/database/gdb", "Result", true, "Interface", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"], + ["github.com/gogf/gf/database/gdb", "Result", true, "Json", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"], + ["github.com/gogf/gf/database/gdb", "Result", true, "List", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"], + ["github.com/gogf/gf/database/gdb", "Result", true, "MapKeyInt", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"], + ["github.com/gogf/gf/database/gdb", "Result", true, "MapKeyStr", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"], + ["github.com/gogf/gf/database/gdb", "Result", true, "MapKeyUint", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"], + ["github.com/gogf/gf/database/gdb", "Result", true, "MapKeyValue", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"], + ["github.com/gogf/gf/database/gdb", "Result", true, "RecordKeyInt", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"], + ["github.com/gogf/gf/database/gdb", "Result", true, "RecordKeyStr", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"], + ["github.com/gogf/gf/database/gdb", "Result", true, "RecordKeyUint", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"], + ["github.com/gogf/gf/database/gdb", "Result", true, "ScanList", "", "", "Argument[receiver]", "Argument[0]", "taint", "manual"], + ["github.com/gogf/gf/database/gdb", "Result", true, "Structs", "", "", "Argument[receiver]", "Argument[0]", "taint", "manual"], + ["github.com/gogf/gf/database/gdb", "Result", true, "Xml", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] + ] + } + ] +} diff --git a/go/ql/lib/ext/github.com.gogf.gf.database.gdb.model.yml b/go/ql/lib/ext/github.com.gogf.gf.database.gdb.model.yml deleted file mode 100644 index fbca149dd7ac..000000000000 --- a/go/ql/lib/ext/github.com.gogf.gf.database.gdb.model.yml +++ /dev/null @@ -1,130 +0,0 @@ -extensions: - - addsTo: - pack: codeql/go-all - extensible: sinkModel - data: - # These models are for v1. Some of them hold for v2, but we should model v2 properly. - - ["github.com/gogf/gf/database/gdb", "Core", True, "DoCommit", "", "", "Argument[2]", "sql-injection", "manual"] - - ["github.com/gogf/gf/database/gdb", "Core", True, "DoExec", "", "", "Argument[2]", "sql-injection", "manual"] - - ["github.com/gogf/gf/database/gdb", "Core", True, "DoGetAll", "", "", "Argument[2]", "sql-injection", "manual"] - - ["github.com/gogf/gf/database/gdb", "Core", True, "DoQuery", "", "", "Argument[2]", "sql-injection", "manual"] - - ["github.com/gogf/gf/database/gdb", "Core", True, "DoPrepare", "", "", "Argument[2]", "sql-injection", "manual"] - - ["github.com/gogf/gf/database/gdb", "Core", True, "Exec", "", "", "Argument[0]", "sql-injection", "manual"] - - ["github.com/gogf/gf/database/gdb", "Core", True, "GetAll", "", "", "Argument[0]", "sql-injection", "manual"] - - ["github.com/gogf/gf/database/gdb", "Core", True, "GetArray", "", "", "Argument[0]", "sql-injection", "manual"] - - ["github.com/gogf/gf/database/gdb", "Core", True, "GetCount", "", "", "Argument[0]", "sql-injection", "manual"] - - ["github.com/gogf/gf/database/gdb", "Core", True, "GetOne", "", "", "Argument[0]", "sql-injection", "manual"] - - ["github.com/gogf/gf/database/gdb", "Core", True, "GetScan", "", "", "Argument[1]", "sql-injection", "manual"] - - ["github.com/gogf/gf/database/gdb", "Core", True, "GetStruct", "", "", "Argument[1]", "sql-injection", "manual"] - - ["github.com/gogf/gf/database/gdb", "Core", True, "GetStructs", "", "", "Argument[1]", "sql-injection", "manual"] - - ["github.com/gogf/gf/database/gdb", "Core", True, "GetValue", "", "", "Argument[0]", "sql-injection", "manual"] - - ["github.com/gogf/gf/database/gdb", "Core", True, "Prepare", "", "", "Argument[0]", "sql-injection", "manual"] - - ["github.com/gogf/gf/database/gdb", "Core", True, "Query", "", "", "Argument[0]", "sql-injection", "manual"] - - ["github.com/gogf/gf/database/gdb", "Core", True, "Raw", "", "", "Argument[0]", "sql-injection", "manual"] - - ["github.com/gogf/gf/database/gdb", "DB", True, "DoCommit", "", "", "Argument[2]", "sql-injection", "manual"] - - ["github.com/gogf/gf/database/gdb", "DB", True, "DoExec", "", "", "Argument[2]", "sql-injection", "manual"] - - ["github.com/gogf/gf/database/gdb", "DB", True, "DoGetAll", "", "", "Argument[2]", "sql-injection", "manual"] - - ["github.com/gogf/gf/database/gdb", "DB", True, "DoQuery", "", "", "Argument[2]", "sql-injection", "manual"] - - ["github.com/gogf/gf/database/gdb", "DB", True, "DoPrepare", "", "", "Argument[2]", "sql-injection", "manual"] - - ["github.com/gogf/gf/database/gdb", "DB", True, "Exec", "", "", "Argument[0]", "sql-injection", "manual"] - - ["github.com/gogf/gf/database/gdb", "DB", True, "GetAll", "", "", "Argument[0]", "sql-injection", "manual"] - - ["github.com/gogf/gf/database/gdb", "DB", True, "GetArray", "", "", "Argument[0]", "sql-injection", "manual"] - - ["github.com/gogf/gf/database/gdb", "DB", True, "GetCount", "", "", "Argument[0]", "sql-injection", "manual"] - - ["github.com/gogf/gf/database/gdb", "DB", True, "GetOne", "", "", "Argument[0]", "sql-injection", "manual"] - - ["github.com/gogf/gf/database/gdb", "DB", True, "GetScan", "", "", "Argument[1]", "sql-injection", "manual"] - - ["github.com/gogf/gf/database/gdb", "DB", True, "GetStruct", "", "", "Argument[1]", "sql-injection", "manual"] - - ["github.com/gogf/gf/database/gdb", "DB", True, "GetStructs", "", "", "Argument[1]", "sql-injection", "manual"] - - ["github.com/gogf/gf/database/gdb", "DB", True, "GetValue", "", "", "Argument[0]", "sql-injection", "manual"] - - ["github.com/gogf/gf/database/gdb", "DB", True, "Prepare", "", "", "Argument[0]", "sql-injection", "manual"] - - ["github.com/gogf/gf/database/gdb", "DB", True, "Query", "", "", "Argument[0]", "sql-injection", "manual"] - - ["github.com/gogf/gf/database/gdb", "DB", True, "Raw", "", "", "Argument[0]", "sql-injection", "manual"] - - ["github.com/gogf/gf/database/gdb", "Tx", True, "DoCommit", "", "", "Argument[2]", "sql-injection", "manual"] - - ["github.com/gogf/gf/database/gdb", "Tx", True, "DoExec", "", "", "Argument[2]", "sql-injection", "manual"] - - ["github.com/gogf/gf/database/gdb", "Tx", True, "DoGetAll", "", "", "Argument[2]", "sql-injection", "manual"] - - ["github.com/gogf/gf/database/gdb", "Tx", True, "DoQuery", "", "", "Argument[2]", "sql-injection", "manual"] - - ["github.com/gogf/gf/database/gdb", "Tx", True, "DoPrepare", "", "", "Argument[2]", "sql-injection", "manual"] - - ["github.com/gogf/gf/database/gdb", "Tx", True, "Exec", "", "", "Argument[0]", "sql-injection", "manual"] - - ["github.com/gogf/gf/database/gdb", "Tx", True, "GetAll", "", "", "Argument[0]", "sql-injection", "manual"] - - ["github.com/gogf/gf/database/gdb", "Tx", True, "GetArray", "", "", "Argument[0]", "sql-injection", "manual"] - - ["github.com/gogf/gf/database/gdb", "Tx", True, "GetCount", "", "", "Argument[0]", "sql-injection", "manual"] - - ["github.com/gogf/gf/database/gdb", "Tx", True, "GetOne", "", "", "Argument[0]", "sql-injection", "manual"] - - ["github.com/gogf/gf/database/gdb", "Tx", True, "GetScan", "", "", "Argument[1]", "sql-injection", "manual"] - - ["github.com/gogf/gf/database/gdb", "Tx", True, "GetStruct", "", "", "Argument[1]", "sql-injection", "manual"] - - ["github.com/gogf/gf/database/gdb", "Tx", True, "GetStructs", "", "", "Argument[1]", "sql-injection", "manual"] - - ["github.com/gogf/gf/database/gdb", "Tx", True, "GetValue", "", "", "Argument[0]", "sql-injection", "manual"] - - ["github.com/gogf/gf/database/gdb", "Tx", True, "Prepare", "", "", "Argument[0]", "sql-injection", "manual"] - - ["github.com/gogf/gf/database/gdb", "Tx", True, "Query", "", "", "Argument[0]", "sql-injection", "manual"] - - ["github.com/gogf/gf/database/gdb", "Tx", True, "Raw", "", "", "Argument[0]", "sql-injection", "manual"] - - addsTo: - pack: codeql/go-all - extensible: sourceModel - data: - # These models are for v1. Some of them hold for v2, but we should model v2 properly. - - ["github.com/gogf/gf/database/gdb", "Core", True, "DoGetAll", "", "", "ReturnValue[0]", "database", "manual"] - - ["github.com/gogf/gf/database/gdb", "Core", True, "DoQuery", "", "", "ReturnValue[0]", "database", "manual"] - - ["github.com/gogf/gf/database/gdb", "Core", True, "GetAll", "", "", "ReturnValue[0]", "database", "manual"] - - ["github.com/gogf/gf/database/gdb", "Core", True, "GetArray", "", "", "ReturnValue[0]", "database", "manual"] - - ["github.com/gogf/gf/database/gdb", "Core", True, "GetOne", "", "", "ReturnValue[0]", "database", "manual"] - - ["github.com/gogf/gf/database/gdb", "Core", True, "GetScan", "", "", "Argument[0]", "database", "manual"] - - ["github.com/gogf/gf/database/gdb", "Core", True, "GetStruct", "", "", "Argument[0]", "database", "manual"] - - ["github.com/gogf/gf/database/gdb", "Core", True, "GetStructs", "", "", "Argument[0]", "database", "manual"] - - ["github.com/gogf/gf/database/gdb", "Core", True, "GetValue", "", "", "ReturnValue[0]", "database", "manual"] - - ["github.com/gogf/gf/database/gdb", "Core", True, "Query", "", "", "ReturnValue[0]", "database", "manual"] - - - ["github.com/gogf/gf/database/gdb", "DB", True, "DoGetAll", "", "", "ReturnValue[0]", "database", "manual"] - - ["github.com/gogf/gf/database/gdb", "DB", True, "DoQuery", "", "", "ReturnValue[0]", "database", "manual"] - - ["github.com/gogf/gf/database/gdb", "DB", True, "GetAll", "", "", "ReturnValue[0]", "database", "manual"] - - ["github.com/gogf/gf/database/gdb", "DB", True, "GetArray", "", "", "ReturnValue[0]", "database", "manual"] - - ["github.com/gogf/gf/database/gdb", "DB", True, "GetOne", "", "", "ReturnValue[0]", "database", "manual"] - - ["github.com/gogf/gf/database/gdb", "DB", True, "GetScan", "", "", "Argument[0]", "database", "manual"] - - ["github.com/gogf/gf/database/gdb", "DB", True, "GetValue", "", "", "ReturnValue[0]", "database", "manual"] - - ["github.com/gogf/gf/database/gdb", "DB", True, "Query", "", "", "ReturnValue[0]", "database", "manual"] - - - ["github.com/gogf/gf/database/gdb", "Model", True, "All", "", "", "ReturnValue[0]", "database", "manual"] - - ["github.com/gogf/gf/database/gdb", "Model", True, "Array", "", "", "ReturnValue[0]", "database", "manual"] - - ["github.com/gogf/gf/database/gdb", "Model", True, "FindAll", "", "", "ReturnValue[0]", "database", "manual"] - - ["github.com/gogf/gf/database/gdb", "Model", True, "FindArray", "", "", "ReturnValue[0]", "database", "manual"] - - ["github.com/gogf/gf/database/gdb", "Model", True, "FindOne", "", "", "ReturnValue[0]", "database", "manual"] - - ["github.com/gogf/gf/database/gdb", "Model", True, "FindScan", "", "", "Argument[0]", "database", "manual"] - - ["github.com/gogf/gf/database/gdb", "Model", True, "FindValue", "", "", "ReturnValue[0]", "database", "manual"] - - ["github.com/gogf/gf/database/gdb", "Model", True, "One", "", "", "ReturnValue[0]", "database", "manual"] - - ["github.com/gogf/gf/database/gdb", "Model", True, "Scan", "", "", "Argument[0]", "database", "manual"] - - ["github.com/gogf/gf/database/gdb", "Model", True, "ScanList", "", "", "Argument[0]", "database", "manual"] - - ["github.com/gogf/gf/database/gdb", "Model", True, "Select", "", "", "ReturnValue[0]", "database", "manual"] - - ["github.com/gogf/gf/database/gdb", "Model", True, "Struct", "", "", "Argument[0]", "database", "manual"] - - ["github.com/gogf/gf/database/gdb", "Model", True, "Structs", "", "", "Argument[0]", "database", "manual"] - - ["github.com/gogf/gf/database/gdb", "Model", True, "Value", "", "", "ReturnValue[0]", "database", "manual"] - - - ["github.com/gogf/gf/database/gdb", "TX", True, "GetAll", "", "", "ReturnValue[0]", "database", "manual"] - - ["github.com/gogf/gf/database/gdb", "TX", True, "GetOne", "", "", "ReturnValue[0]", "database", "manual"] - - ["github.com/gogf/gf/database/gdb", "TX", True, "GetScan", "", "", "Argument[0]", "database", "manual"] - - ["github.com/gogf/gf/database/gdb", "TX", True, "GetStruct", "", "", "Argument[0]", "database", "manual"] - - ["github.com/gogf/gf/database/gdb", "TX", True, "GetStructs", "", "", "Argument[0]", "database", "manual"] - - ["github.com/gogf/gf/database/gdb", "TX", True, "GetValue", "", "", "ReturnValue[0]", "database", "manual"] - - ["github.com/gogf/gf/database/gdb", "TX", True, "Query", "", "", "ReturnValue[0]", "database", "manual"] - - addsTo: - pack: codeql/go-all - extensible: summaryModel - data: - - ["github.com/gogf/gf/database/gdb", "Record", True, "GMap", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] - - ["github.com/gogf/gf/database/gdb", "Record", True, "Interface", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] - - ["github.com/gogf/gf/database/gdb", "Record", True, "Json", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] - - ["github.com/gogf/gf/database/gdb", "Record", True, "Map", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] - - ["github.com/gogf/gf/database/gdb", "Record", True, "Struct", "", "", "Argument[receiver]", "Argument[0]", "taint", "manual"] - - ["github.com/gogf/gf/database/gdb", "Record", True, "Xml", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] - - - ["github.com/gogf/gf/database/gdb", "Result", True, "Array", "", "", "Argument[receiver]", "ReturnValue.ArrayElement", "taint", "manual"] - - ["github.com/gogf/gf/database/gdb", "Result", True, "Chunk", "", "", "Argument[receiver]", "ReturnValue.ArrayElement", "taint", "manual"] - - ["github.com/gogf/gf/database/gdb", "Result", True, "Interface", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] - - ["github.com/gogf/gf/database/gdb", "Result", True, "Json", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] - - ["github.com/gogf/gf/database/gdb", "Result", True, "List", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] - - ["github.com/gogf/gf/database/gdb", "Result", True, "MapKeyInt", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] - - ["github.com/gogf/gf/database/gdb", "Result", True, "MapKeyStr", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] - - ["github.com/gogf/gf/database/gdb", "Result", True, "MapKeyUint", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] - - ["github.com/gogf/gf/database/gdb", "Result", True, "MapKeyValue", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] - - ["github.com/gogf/gf/database/gdb", "Result", True, "RecordKeyInt", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] - - ["github.com/gogf/gf/database/gdb", "Result", True, "RecordKeyStr", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] - - ["github.com/gogf/gf/database/gdb", "Result", True, "RecordKeyUint", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] - - ["github.com/gogf/gf/database/gdb", "Result", True, "ScanList", "", "", "Argument[receiver]", "Argument[0]", "taint", "manual"] - - ["github.com/gogf/gf/database/gdb", "Result", True, "Structs", "", "", "Argument[receiver]", "Argument[0]", "taint", "manual"] - - ["github.com/gogf/gf/database/gdb", "Result", True, "Xml", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] diff --git a/go/ql/lib/ext/github.com.golang-jwt.jwt.model.json b/go/ql/lib/ext/github.com.golang-jwt.jwt.model.json new file mode 100644 index 000000000000..f8fcf556cab0 --- /dev/null +++ b/go/ql/lib/ext/github.com.golang-jwt.jwt.model.json @@ -0,0 +1,34 @@ +{ + "extensions": [ + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "sinkModel" + }, + "data": [ + ["github.com/golang-jwt/jwt", "SigningMethod", true, "Sign", "", "", "Argument[1]", "credentials-key", "manual"], + ["github.com/golang-jwt/jwt", "Token", true, "SignedString", "", "", "Argument[0]", "credentials-key", "manual"], + ["github.com/golang-jwt/jwt", "Parser", true, "ParseUnverified", "", "", "Argument[0]", "jwt", "manual"] + ] + }, + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "summaryModel" + }, + "data": [ + ["github.com/golang-jwt/jwt", "", false, "Parse", "", "", "Argument[0]", "ReturnValue[0]", "taint", "manual"], + ["github.com/golang-jwt/jwt", "Parser", true, "Parse", "", "", "Argument[0]", "ReturnValue[0]", "taint", "manual"], + ["github.com/golang-jwt/jwt", "", false, "ParseWithClaims", "", "", "Argument[0]", "ReturnValue[0]", "taint", "manual"], + ["github.com/golang-jwt/jwt", "Parser", true, "ParseWithClaims", "", "", "Argument[0]", "ReturnValue[0]", "taint", "manual"], + ["github.com/golang-jwt/jwt", "", false, "ParseECPrivateKeyFromPEM", "", "", "Argument[0]", "ReturnValue[0]", "taint", "manual"], + ["github.com/golang-jwt/jwt", "", false, "ParseECPublicKeyFromPEM", "", "", "Argument[0]", "ReturnValue[0]", "taint", "manual"], + ["github.com/golang-jwt/jwt", "", false, "ParseEdPrivateKeyFromPEM", "", "", "Argument[0]", "ReturnValue[0]", "taint", "manual"], + ["github.com/golang-jwt/jwt", "", false, "ParseEdPublicKeyFromPEM", "", "", "Argument[0]", "ReturnValue[0]", "taint", "manual"], + ["github.com/golang-jwt/jwt", "", false, "ParseRSAPrivateKeyFromPEM", "", "", "Argument[0]", "ReturnValue[0]", "taint", "manual"], + ["github.com/golang-jwt/jwt", "", false, "ParseRSAPublicKeyFromPEM", "", "", "Argument[0]", "ReturnValue[0]", "taint", "manual"], + ["github.com/golang-jwt/jwt", "", false, "RegisterSigningMethod", "", "", "Argument[0]", "ReturnValue[0]", "taint", "manual"] + ] + } + ] +} diff --git a/go/ql/lib/ext/github.com.golang-jwt.jwt.model.yml b/go/ql/lib/ext/github.com.golang-jwt.jwt.model.yml deleted file mode 100644 index 494c94709994..000000000000 --- a/go/ql/lib/ext/github.com.golang-jwt.jwt.model.yml +++ /dev/null @@ -1,23 +0,0 @@ -extensions: - - addsTo: - pack: codeql/go-all - extensible: sinkModel - data: - - ["github.com/golang-jwt/jwt", "SigningMethod", True, "Sign", "", "", "Argument[1]", "credentials-key", "manual"] - - ["github.com/golang-jwt/jwt", "Token", True, "SignedString", "", "", "Argument[0]", "credentials-key", "manual"] - - ["github.com/golang-jwt/jwt", "Parser", True, "ParseUnverified", "", "", "Argument[0]", "jwt", "manual"] - - addsTo: - pack: codeql/go-all - extensible: summaryModel - data: - - ["github.com/golang-jwt/jwt", "", False, "Parse", "", "", "Argument[0]", "ReturnValue[0]", "taint", "manual"] - - ["github.com/golang-jwt/jwt", "Parser", True, "Parse", "", "", "Argument[0]", "ReturnValue[0]", "taint", "manual"] - - ["github.com/golang-jwt/jwt", "", False, "ParseWithClaims", "", "", "Argument[0]", "ReturnValue[0]", "taint", "manual"] - - ["github.com/golang-jwt/jwt", "Parser", True, "ParseWithClaims", "", "", "Argument[0]", "ReturnValue[0]", "taint", "manual"] - - ["github.com/golang-jwt/jwt", "", False, "ParseECPrivateKeyFromPEM", "", "", "Argument[0]", "ReturnValue[0]", "taint", "manual"] - - ["github.com/golang-jwt/jwt", "", False, "ParseECPublicKeyFromPEM", "", "", "Argument[0]", "ReturnValue[0]", "taint", "manual"] - - ["github.com/golang-jwt/jwt", "", False, "ParseEdPrivateKeyFromPEM", "", "", "Argument[0]", "ReturnValue[0]", "taint", "manual"] - - ["github.com/golang-jwt/jwt", "", False, "ParseEdPublicKeyFromPEM", "", "", "Argument[0]", "ReturnValue[0]", "taint", "manual"] - - ["github.com/golang-jwt/jwt", "", False, "ParseRSAPrivateKeyFromPEM", "", "", "Argument[0]", "ReturnValue[0]", "taint", "manual"] - - ["github.com/golang-jwt/jwt", "", False, "ParseRSAPublicKeyFromPEM", "", "", "Argument[0]", "ReturnValue[0]", "taint", "manual"] - - ["github.com/golang-jwt/jwt", "", False, "RegisterSigningMethod", "", "", "Argument[0]", "ReturnValue[0]", "taint", "manual"] diff --git a/go/ql/lib/ext/github.com.golang.glog.model.json b/go/ql/lib/ext/github.com.golang.glog.model.json new file mode 100644 index 000000000000..9884f41297cb --- /dev/null +++ b/go/ql/lib/ext/github.com.golang.glog.model.json @@ -0,0 +1,113 @@ +{ + "extensions": [ + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "packageGrouping" + }, + "data": [ + ["glog", "github.com/golang/glog"], + ["glog", "gopkg.in/glog"], + ["glog", "k8s.io/klog"] + ] + }, + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "sinkModel" + }, + "data": [ + ["group:glog", "", false, "Error", "", "", "Argument[0]", "log-injection", "manual"], + ["group:glog", "", false, "ErrorContext", "", "", "Argument[1]", "log-injection", "manual"], + ["group:glog", "", false, "ErrorContextDepth", "", "", "Argument[2]", "log-injection", "manual"], + ["group:glog", "", false, "ErrorContextDepthf", "", "", "Argument[2..3]", "log-injection", "manual"], + ["group:glog", "", false, "ErrorContextf", "", "", "Argument[1..2]", "log-injection", "manual"], + ["group:glog", "", false, "ErrorDepth", "", "", "Argument[1]", "log-injection", "manual"], + ["group:glog", "", false, "ErrorDepthf", "", "", "Argument[1..2]", "log-injection", "manual"], + ["group:glog", "", false, "Errorf", "", "", "Argument[0..1]", "log-injection", "manual"], + ["group:glog", "", false, "Errorln", "", "", "Argument[0]", "log-injection", "manual"], + ["group:glog", "", false, "Exit", "", "", "Argument[0]", "log-injection", "manual"], + ["group:glog", "", false, "ExitContext", "", "", "Argument[1]", "log-injection", "manual"], + ["group:glog", "", false, "ExitContextDepth", "", "", "Argument[2]", "log-injection", "manual"], + ["group:glog", "", false, "ExitContextDepthf", "", "", "Argument[2..3]", "log-injection", "manual"], + ["group:glog", "", false, "ExitContextf", "", "", "Argument[1..2]", "log-injection", "manual"], + ["group:glog", "", false, "ExitDepth", "", "", "Argument[1]", "log-injection", "manual"], + ["group:glog", "", false, "ExitDepthf", "", "", "Argument[1..2]", "log-injection", "manual"], + ["group:glog", "", false, "Exitf", "", "", "Argument[0..1]", "log-injection", "manual"], + ["group:glog", "", false, "Exitln", "", "", "Argument[0]", "log-injection", "manual"], + ["group:glog", "", false, "Fatal", "", "", "Argument[0]", "log-injection", "manual"], + ["group:glog", "", false, "FatalContext", "", "", "Argument[1]", "log-injection", "manual"], + ["group:glog", "", false, "FatalContextDepth", "", "", "Argument[2]", "log-injection", "manual"], + ["group:glog", "", false, "FatalContextDepthf", "", "", "Argument[2..3]", "log-injection", "manual"], + ["group:glog", "", false, "FatalContextf", "", "", "Argument[1..2]", "log-injection", "manual"], + ["group:glog", "", false, "FatalDepth", "", "", "Argument[1]", "log-injection", "manual"], + ["group:glog", "", false, "FatalDepthf", "", "", "Argument[1..2]", "log-injection", "manual"], + ["group:glog", "", false, "Fatalf", "", "", "Argument[0..1]", "log-injection", "manual"], + ["group:glog", "", false, "Fatalln", "", "", "Argument[0]", "log-injection", "manual"], + ["group:glog", "", false, "Info", "", "", "Argument[0]", "log-injection", "manual"], + ["group:glog", "", false, "InfoContext", "", "", "Argument[1]", "log-injection", "manual"], + ["group:glog", "", false, "InfoContextDepth", "", "", "Argument[2]", "log-injection", "manual"], + ["group:glog", "", false, "InfoContextDepthf", "", "", "Argument[2..3]", "log-injection", "manual"], + ["group:glog", "", false, "InfoContextf", "", "", "Argument[1..2]", "log-injection", "manual"], + ["group:glog", "", false, "InfoDepth", "", "", "Argument[1]", "log-injection", "manual"], + ["group:glog", "", false, "InfoDepthf", "", "", "Argument[1..2]", "log-injection", "manual"], + ["group:glog", "", false, "Infof", "", "", "Argument[0..1]", "log-injection", "manual"], + ["group:glog", "", false, "Infoln", "", "", "Argument[0]", "log-injection", "manual"], + ["group:glog", "", false, "Warning", "", "", "Argument[0]", "log-injection", "manual"], + ["group:glog", "", false, "WarningContext", "", "", "Argument[1]", "log-injection", "manual"], + ["group:glog", "", false, "WarningContextDepth", "", "", "Argument[2]", "log-injection", "manual"], + ["group:glog", "", false, "WarningContextDepthf", "", "", "Argument[2..3]", "log-injection", "manual"], + ["group:glog", "", false, "WarningContextf", "", "", "Argument[1..2]", "log-injection", "manual"], + ["group:glog", "", false, "WarningDepth", "", "", "Argument[1]", "log-injection", "manual"], + ["group:glog", "", false, "WarningDepthf", "", "", "Argument[1..2]", "log-injection", "manual"], + ["group:glog", "", false, "Warningf", "", "", "Argument[0..1]", "log-injection", "manual"], + ["group:glog", "", false, "Warningln", "", "", "Argument[0]", "log-injection", "manual"], + ["group:glog", "Verbose", true, "Error", "", "", "Argument[0]", "log-injection", "manual"], + ["group:glog", "Verbose", true, "ErrorContext", "", "", "Argument[1]", "log-injection", "manual"], + ["group:glog", "Verbose", true, "ErrorContextDepth", "", "", "Argument[2]", "log-injection", "manual"], + ["group:glog", "Verbose", true, "ErrorContextDepthf", "", "", "Argument[2..3]", "log-injection", "manual"], + ["group:glog", "Verbose", true, "ErrorContextf", "", "", "Argument[1..2]", "log-injection", "manual"], + ["group:glog", "Verbose", true, "ErrorDepth", "", "", "Argument[1]", "log-injection", "manual"], + ["group:glog", "Verbose", true, "ErrorDepthf", "", "", "Argument[1..2]", "log-injection", "manual"], + ["group:glog", "Verbose", true, "Errorf", "", "", "Argument[0..1]", "log-injection", "manual"], + ["group:glog", "Verbose", true, "Errorln", "", "", "Argument[0]", "log-injection", "manual"], + ["group:glog", "Verbose", true, "Exit", "", "", "Argument[0]", "log-injection", "manual"], + ["group:glog", "Verbose", true, "ExitContext", "", "", "Argument[1]", "log-injection", "manual"], + ["group:glog", "Verbose", true, "ExitContextDepth", "", "", "Argument[2]", "log-injection", "manual"], + ["group:glog", "Verbose", true, "ExitContextDepthf", "", "", "Argument[2..3]", "log-injection", "manual"], + ["group:glog", "Verbose", true, "ExitContextf", "", "", "Argument[1..2]", "log-injection", "manual"], + ["group:glog", "Verbose", true, "ExitDepth", "", "", "Argument[1]", "log-injection", "manual"], + ["group:glog", "Verbose", true, "ExitDepthf", "", "", "Argument[1..2]", "log-injection", "manual"], + ["group:glog", "Verbose", true, "Exitf", "", "", "Argument[0..1]", "log-injection", "manual"], + ["group:glog", "Verbose", true, "Exitln", "", "", "Argument[0]", "log-injection", "manual"], + ["group:glog", "Verbose", true, "Fatal", "", "", "Argument[0]", "log-injection", "manual"], + ["group:glog", "Verbose", true, "FatalContext", "", "", "Argument[1]", "log-injection", "manual"], + ["group:glog", "Verbose", true, "FatalContextDepth", "", "", "Argument[2]", "log-injection", "manual"], + ["group:glog", "Verbose", true, "FatalContextDepthf", "", "", "Argument[2..3]", "log-injection", "manual"], + ["group:glog", "Verbose", true, "FatalContextf", "", "", "Argument[1..2]", "log-injection", "manual"], + ["group:glog", "Verbose", true, "FatalDepth", "", "", "Argument[1]", "log-injection", "manual"], + ["group:glog", "Verbose", true, "FatalDepthf", "", "", "Argument[1..2]", "log-injection", "manual"], + ["group:glog", "Verbose", true, "Fatalf", "", "", "Argument[0..1]", "log-injection", "manual"], + ["group:glog", "Verbose", true, "Fatalln", "", "", "Argument[0]", "log-injection", "manual"], + ["group:glog", "Verbose", true, "Info", "", "", "Argument[0]", "log-injection", "manual"], + ["group:glog", "Verbose", true, "InfoContext", "", "", "Argument[1]", "log-injection", "manual"], + ["group:glog", "Verbose", true, "InfoContextDepth", "", "", "Argument[2]", "log-injection", "manual"], + ["group:glog", "Verbose", true, "InfoContextDepthf", "", "", "Argument[2..3]", "log-injection", "manual"], + ["group:glog", "Verbose", true, "InfoContextf", "", "", "Argument[1..2]", "log-injection", "manual"], + ["group:glog", "Verbose", true, "InfoDepth", "", "", "Argument[1]", "log-injection", "manual"], + ["group:glog", "Verbose", true, "InfoDepthf", "", "", "Argument[1..2]", "log-injection", "manual"], + ["group:glog", "Verbose", true, "Infof", "", "", "Argument[0..1]", "log-injection", "manual"], + ["group:glog", "Verbose", true, "Infoln", "", "", "Argument[0]", "log-injection", "manual"], + ["group:glog", "Verbose", true, "Warning", "", "", "Argument[0]", "log-injection", "manual"], + ["group:glog", "Verbose", true, "WarningContext", "", "", "Argument[1]", "log-injection", "manual"], + ["group:glog", "Verbose", true, "WarningContextDepth", "", "", "Argument[2]", "log-injection", "manual"], + ["group:glog", "Verbose", true, "WarningContextDepthf", "", "", "Argument[2..3]", "log-injection", "manual"], + ["group:glog", "Verbose", true, "WarningContextf", "", "", "Argument[1..2]", "log-injection", "manual"], + ["group:glog", "Verbose", true, "WarningDepth", "", "", "Argument[1]", "log-injection", "manual"], + ["group:glog", "Verbose", true, "WarningDepthf", "", "", "Argument[1..2]", "log-injection", "manual"], + ["group:glog", "Verbose", true, "Warningf", "", "", "Argument[0..1]", "log-injection", "manual"], + ["group:glog", "Verbose", true, "Warningln", "", "", "Argument[0]", "log-injection", "manual"] + ] + } + ] +} diff --git a/go/ql/lib/ext/github.com.golang.glog.model.yml b/go/ql/lib/ext/github.com.golang.glog.model.yml deleted file mode 100644 index 275450f2c447..000000000000 --- a/go/ql/lib/ext/github.com.golang.glog.model.yml +++ /dev/null @@ -1,102 +0,0 @@ -extensions: - - addsTo: - pack: codeql/go-all - extensible: packageGrouping - data: - - ["glog", "github.com/golang/glog"] - - ["glog", "gopkg.in/glog"] - - ["glog", "k8s.io/klog"] - - addsTo: - pack: codeql/go-all - extensible: sinkModel - data: - - ["group:glog", "", False, "Error", "", "", "Argument[0]", "log-injection", "manual"] - - ["group:glog", "", False, "ErrorContext", "", "", "Argument[1]", "log-injection", "manual"] - - ["group:glog", "", False, "ErrorContextDepth", "", "", "Argument[2]", "log-injection", "manual"] - - ["group:glog", "", False, "ErrorContextDepthf", "", "", "Argument[2..3]", "log-injection", "manual"] - - ["group:glog", "", False, "ErrorContextf", "", "", "Argument[1..2]", "log-injection", "manual"] - - ["group:glog", "", False, "ErrorDepth", "", "", "Argument[1]", "log-injection", "manual"] - - ["group:glog", "", False, "ErrorDepthf", "", "", "Argument[1..2]", "log-injection", "manual"] - - ["group:glog", "", False, "Errorf", "", "", "Argument[0..1]", "log-injection", "manual"] - - ["group:glog", "", False, "Errorln", "", "", "Argument[0]", "log-injection", "manual"] - - ["group:glog", "", False, "Exit", "", "", "Argument[0]", "log-injection", "manual"] - - ["group:glog", "", False, "ExitContext", "", "", "Argument[1]", "log-injection", "manual"] - - ["group:glog", "", False, "ExitContextDepth", "", "", "Argument[2]", "log-injection", "manual"] - - ["group:glog", "", False, "ExitContextDepthf", "", "", "Argument[2..3]", "log-injection", "manual"] - - ["group:glog", "", False, "ExitContextf", "", "", "Argument[1..2]", "log-injection", "manual"] - - ["group:glog", "", False, "ExitDepth", "", "", "Argument[1]", "log-injection", "manual"] - - ["group:glog", "", False, "ExitDepthf", "", "", "Argument[1..2]", "log-injection", "manual"] - - ["group:glog", "", False, "Exitf", "", "", "Argument[0..1]", "log-injection", "manual"] - - ["group:glog", "", False, "Exitln", "", "", "Argument[0]", "log-injection", "manual"] - - ["group:glog", "", False, "Fatal", "", "", "Argument[0]", "log-injection", "manual"] - - ["group:glog", "", False, "FatalContext", "", "", "Argument[1]", "log-injection", "manual"] - - ["group:glog", "", False, "FatalContextDepth", "", "", "Argument[2]", "log-injection", "manual"] - - ["group:glog", "", False, "FatalContextDepthf", "", "", "Argument[2..3]", "log-injection", "manual"] - - ["group:glog", "", False, "FatalContextf", "", "", "Argument[1..2]", "log-injection", "manual"] - - ["group:glog", "", False, "FatalDepth", "", "", "Argument[1]", "log-injection", "manual"] - - ["group:glog", "", False, "FatalDepthf", "", "", "Argument[1..2]", "log-injection", "manual"] - - ["group:glog", "", False, "Fatalf", "", "", "Argument[0..1]", "log-injection", "manual"] - - ["group:glog", "", False, "Fatalln", "", "", "Argument[0]", "log-injection", "manual"] - - ["group:glog", "", False, "Info", "", "", "Argument[0]", "log-injection", "manual"] - - ["group:glog", "", False, "InfoContext", "", "", "Argument[1]", "log-injection", "manual"] - - ["group:glog", "", False, "InfoContextDepth", "", "", "Argument[2]", "log-injection", "manual"] - - ["group:glog", "", False, "InfoContextDepthf", "", "", "Argument[2..3]", "log-injection", "manual"] - - ["group:glog", "", False, "InfoContextf", "", "", "Argument[1..2]", "log-injection", "manual"] - - ["group:glog", "", False, "InfoDepth", "", "", "Argument[1]", "log-injection", "manual"] - - ["group:glog", "", False, "InfoDepthf", "", "", "Argument[1..2]", "log-injection", "manual"] - - ["group:glog", "", False, "Infof", "", "", "Argument[0..1]", "log-injection", "manual"] - - ["group:glog", "", False, "Infoln", "", "", "Argument[0]", "log-injection", "manual"] - - ["group:glog", "", False, "Warning", "", "", "Argument[0]", "log-injection", "manual"] - - ["group:glog", "", False, "WarningContext", "", "", "Argument[1]", "log-injection", "manual"] - - ["group:glog", "", False, "WarningContextDepth", "", "", "Argument[2]", "log-injection", "manual"] - - ["group:glog", "", False, "WarningContextDepthf", "", "", "Argument[2..3]", "log-injection", "manual"] - - ["group:glog", "", False, "WarningContextf", "", "", "Argument[1..2]", "log-injection", "manual"] - - ["group:glog", "", False, "WarningDepth", "", "", "Argument[1]", "log-injection", "manual"] - - ["group:glog", "", False, "WarningDepthf", "", "", "Argument[1..2]", "log-injection", "manual"] - - ["group:glog", "", False, "Warningf", "", "", "Argument[0..1]", "log-injection", "manual"] - - ["group:glog", "", False, "Warningln", "", "", "Argument[0]", "log-injection", "manual"] - - ["group:glog", "Verbose", True, "Error", "", "", "Argument[0]", "log-injection", "manual"] - - ["group:glog", "Verbose", True, "ErrorContext", "", "", "Argument[1]", "log-injection", "manual"] - - ["group:glog", "Verbose", True, "ErrorContextDepth", "", "", "Argument[2]", "log-injection", "manual"] - - ["group:glog", "Verbose", True, "ErrorContextDepthf", "", "", "Argument[2..3]", "log-injection", "manual"] - - ["group:glog", "Verbose", True, "ErrorContextf", "", "", "Argument[1..2]", "log-injection", "manual"] - - ["group:glog", "Verbose", True, "ErrorDepth", "", "", "Argument[1]", "log-injection", "manual"] - - ["group:glog", "Verbose", True, "ErrorDepthf", "", "", "Argument[1..2]", "log-injection", "manual"] - - ["group:glog", "Verbose", True, "Errorf", "", "", "Argument[0..1]", "log-injection", "manual"] - - ["group:glog", "Verbose", True, "Errorln", "", "", "Argument[0]", "log-injection", "manual"] - - ["group:glog", "Verbose", True, "Exit", "", "", "Argument[0]", "log-injection", "manual"] - - ["group:glog", "Verbose", True, "ExitContext", "", "", "Argument[1]", "log-injection", "manual"] - - ["group:glog", "Verbose", True, "ExitContextDepth", "", "", "Argument[2]", "log-injection", "manual"] - - ["group:glog", "Verbose", True, "ExitContextDepthf", "", "", "Argument[2..3]", "log-injection", "manual"] - - ["group:glog", "Verbose", True, "ExitContextf", "", "", "Argument[1..2]", "log-injection", "manual"] - - ["group:glog", "Verbose", True, "ExitDepth", "", "", "Argument[1]", "log-injection", "manual"] - - ["group:glog", "Verbose", True, "ExitDepthf", "", "", "Argument[1..2]", "log-injection", "manual"] - - ["group:glog", "Verbose", True, "Exitf", "", "", "Argument[0..1]", "log-injection", "manual"] - - ["group:glog", "Verbose", True, "Exitln", "", "", "Argument[0]", "log-injection", "manual"] - - ["group:glog", "Verbose", True, "Fatal", "", "", "Argument[0]", "log-injection", "manual"] - - ["group:glog", "Verbose", True, "FatalContext", "", "", "Argument[1]", "log-injection", "manual"] - - ["group:glog", "Verbose", True, "FatalContextDepth", "", "", "Argument[2]", "log-injection", "manual"] - - ["group:glog", "Verbose", True, "FatalContextDepthf", "", "", "Argument[2..3]", "log-injection", "manual"] - - ["group:glog", "Verbose", True, "FatalContextf", "", "", "Argument[1..2]", "log-injection", "manual"] - - ["group:glog", "Verbose", True, "FatalDepth", "", "", "Argument[1]", "log-injection", "manual"] - - ["group:glog", "Verbose", True, "FatalDepthf", "", "", "Argument[1..2]", "log-injection", "manual"] - - ["group:glog", "Verbose", True, "Fatalf", "", "", "Argument[0..1]", "log-injection", "manual"] - - ["group:glog", "Verbose", True, "Fatalln", "", "", "Argument[0]", "log-injection", "manual"] - - ["group:glog", "Verbose", True, "Info", "", "", "Argument[0]", "log-injection", "manual"] - - ["group:glog", "Verbose", True, "InfoContext", "", "", "Argument[1]", "log-injection", "manual"] - - ["group:glog", "Verbose", True, "InfoContextDepth", "", "", "Argument[2]", "log-injection", "manual"] - - ["group:glog", "Verbose", True, "InfoContextDepthf", "", "", "Argument[2..3]", "log-injection", "manual"] - - ["group:glog", "Verbose", True, "InfoContextf", "", "", "Argument[1..2]", "log-injection", "manual"] - - ["group:glog", "Verbose", True, "InfoDepth", "", "", "Argument[1]", "log-injection", "manual"] - - ["group:glog", "Verbose", True, "InfoDepthf", "", "", "Argument[1..2]", "log-injection", "manual"] - - ["group:glog", "Verbose", True, "Infof", "", "", "Argument[0..1]", "log-injection", "manual"] - - ["group:glog", "Verbose", True, "Infoln", "", "", "Argument[0]", "log-injection", "manual"] - - ["group:glog", "Verbose", True, "Warning", "", "", "Argument[0]", "log-injection", "manual"] - - ["group:glog", "Verbose", True, "WarningContext", "", "", "Argument[1]", "log-injection", "manual"] - - ["group:glog", "Verbose", True, "WarningContextDepth", "", "", "Argument[2]", "log-injection", "manual"] - - ["group:glog", "Verbose", True, "WarningContextDepthf", "", "", "Argument[2..3]", "log-injection", "manual"] - - ["group:glog", "Verbose", True, "WarningContextf", "", "", "Argument[1..2]", "log-injection", "manual"] - - ["group:glog", "Verbose", True, "WarningDepth", "", "", "Argument[1]", "log-injection", "manual"] - - ["group:glog", "Verbose", True, "WarningDepthf", "", "", "Argument[1..2]", "log-injection", "manual"] - - ["group:glog", "Verbose", True, "Warningf", "", "", "Argument[0..1]", "log-injection", "manual"] - - ["group:glog", "Verbose", True, "Warningln", "", "", "Argument[0]", "log-injection", "manual"] diff --git a/go/ql/lib/ext/github.com.golang.protobuf.proto.model.json b/go/ql/lib/ext/github.com.golang.protobuf.proto.model.json new file mode 100644 index 000000000000..876af5ede361 --- /dev/null +++ b/go/ql/lib/ext/github.com.golang.protobuf.proto.model.json @@ -0,0 +1,16 @@ +{ + "extensions": [ + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "summaryModel" + }, + "data": [ + ["github.com/golang/protobuf/proto", "", false, "Clone", "", "", "Argument[0]", "ReturnValue", "taint", "manual"], + ["github.com/golang/protobuf/proto", "", false, "Marshal", "", "", "Argument[0]", "ReturnValue[0]", "taint", "manual"], + ["github.com/golang/protobuf/proto", "", false, "Merge", "", "", "Argument[1]", "Argument[0]", "taint", "manual"], + ["github.com/golang/protobuf/proto", "", false, "Unmarshal", "", "", "Argument[0]", "Argument[1]", "taint", "manual"] + ] + } + ] +} diff --git a/go/ql/lib/ext/github.com.golang.protobuf.proto.model.yml b/go/ql/lib/ext/github.com.golang.protobuf.proto.model.yml deleted file mode 100644 index 8513d1198164..000000000000 --- a/go/ql/lib/ext/github.com.golang.protobuf.proto.model.yml +++ /dev/null @@ -1,9 +0,0 @@ -extensions: - - addsTo: - pack: codeql/go-all - extensible: summaryModel - data: - - ["github.com/golang/protobuf/proto", "", False, "Clone", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] - - ["github.com/golang/protobuf/proto", "", False, "Marshal", "", "", "Argument[0]", "ReturnValue[0]", "taint", "manual"] - - ["github.com/golang/protobuf/proto", "", False, "Merge", "", "", "Argument[1]", "Argument[0]", "taint", "manual"] - - ["github.com/golang/protobuf/proto", "", False, "Unmarshal", "", "", "Argument[0]", "Argument[1]", "taint", "manual"] diff --git a/go/ql/lib/ext/github.com.gorilla.mux.model.json b/go/ql/lib/ext/github.com.gorilla.mux.model.json new file mode 100644 index 000000000000..462cc96e5fbb --- /dev/null +++ b/go/ql/lib/ext/github.com.gorilla.mux.model.json @@ -0,0 +1,13 @@ +{ + "extensions": [ + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "sourceModel" + }, + "data": [ + ["github.com/gorilla/mux", "", false, "Vars", "", "", "ReturnValue", "remote", "manual"] // TODO: when sources can have access paths, use .MapValue (and .MapKey?) + ] + } + ] +} diff --git a/go/ql/lib/ext/github.com.gorilla.mux.model.yml b/go/ql/lib/ext/github.com.gorilla.mux.model.yml deleted file mode 100644 index b97fc4d2c1d2..000000000000 --- a/go/ql/lib/ext/github.com.gorilla.mux.model.yml +++ /dev/null @@ -1,6 +0,0 @@ -extensions: - - addsTo: - pack: codeql/go-all - extensible: sourceModel - data: - - ["github.com/gorilla/mux", "", False, "Vars", "", "", "ReturnValue", "remote", "manual"] # TODO: when sources can have access paths, use .MapValue (and .MapKey?) diff --git a/go/ql/lib/ext/github.com.gorilla.websocket.model.json b/go/ql/lib/ext/github.com.gorilla.websocket.model.json new file mode 100644 index 000000000000..9128d6515ff2 --- /dev/null +++ b/go/ql/lib/ext/github.com.gorilla.websocket.model.json @@ -0,0 +1,15 @@ +{ + "extensions": [ + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "sourceModel" + }, + "data": [ + ["github.com/gorilla/websocket", "", false, "ReadJSON", "", "", "Argument[1]", "remote", "manual"], + ["github.com/gorilla/websocket", "Conn", true, "ReadJSON", "", "", "Argument[0]", "remote", "manual"], + ["github.com/gorilla/websocket", "Conn", true, "ReadMessage", "", "", "ReturnValue[1]", "remote", "manual"] + ] + } + ] +} diff --git a/go/ql/lib/ext/github.com.gorilla.websocket.model.yml b/go/ql/lib/ext/github.com.gorilla.websocket.model.yml deleted file mode 100644 index 3f03bba8a48c..000000000000 --- a/go/ql/lib/ext/github.com.gorilla.websocket.model.yml +++ /dev/null @@ -1,8 +0,0 @@ -extensions: - - addsTo: - pack: codeql/go-all - extensible: sourceModel - data: - - ["github.com/gorilla/websocket", "", False, "ReadJSON", "", "", "Argument[1]", "remote", "manual"] - - ["github.com/gorilla/websocket", "Conn", True, "ReadJSON", "", "", "Argument[0]", "remote", "manual"] - - ["github.com/gorilla/websocket", "Conn", True, "ReadMessage", "", "", "ReturnValue[1]", "remote", "manual"] diff --git a/go/ql/lib/ext/github.com.hashicorp.go-envparse.model.json b/go/ql/lib/ext/github.com.hashicorp.go-envparse.model.json new file mode 100644 index 000000000000..6fc1d134e68d --- /dev/null +++ b/go/ql/lib/ext/github.com.hashicorp.go-envparse.model.json @@ -0,0 +1,13 @@ +{ + "extensions": [ + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "sourceModel" + }, + "data": [ + ["github.com/hashicorp/go-envparse", "", false, "Parse", "", "", "ReturnValue", "environment", "manual"] + ] + } + ] +} diff --git a/go/ql/lib/ext/github.com.hashicorp.go-envparse.model.yml b/go/ql/lib/ext/github.com.hashicorp.go-envparse.model.yml deleted file mode 100644 index 73a178fbdcc8..000000000000 --- a/go/ql/lib/ext/github.com.hashicorp.go-envparse.model.yml +++ /dev/null @@ -1,6 +0,0 @@ -extensions: - - addsTo: - pack: codeql/go-all - extensible: sourceModel - data: - - ["github.com/hashicorp/go-envparse", "", False, "Parse", "", "", "ReturnValue", "environment", "manual"] diff --git a/go/ql/lib/ext/github.com.jmoiron.sqlx.model.json b/go/ql/lib/ext/github.com.jmoiron.sqlx.model.json new file mode 100644 index 000000000000..7b9532323eab --- /dev/null +++ b/go/ql/lib/ext/github.com.jmoiron.sqlx.model.json @@ -0,0 +1,100 @@ +{ + "extensions": [ + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "sourceModel" + }, + "data": [ + ["github.com/jmoiron/sqlx", "", true, "Get", "", "", "Argument[1]", "database", "manual"], + ["github.com/jmoiron/sqlx", "", true, "GetContext", "", "", "Argument[2]", "database", "manual"], + ["github.com/jmoiron/sqlx", "", true, "NamedQuery", "", "", "ReturnValue[0]", "database", "manual"], + ["github.com/jmoiron/sqlx", "", true, "NamedQueryContext", "", "", "ReturnValue[0]", "database", "manual"], + ["github.com/jmoiron/sqlx", "", true, "Select", "", "", "Argument[1]", "database", "manual"], + ["github.com/jmoiron/sqlx", "", true, "SelectContext", "", "", "Argument[2]", "database", "manual"], + ["github.com/jmoiron/sqlx", "Conn", true, "GetContext", "", "", "Argument[1]", "database", "manual"], + ["github.com/jmoiron/sqlx", "Conn", true, "QueryRowxContext", "", "", "ReturnValue", "database", "manual"], + ["github.com/jmoiron/sqlx", "Conn", true, "QueryxContext", "", "", "ReturnValue[0]", "database", "manual"], + ["github.com/jmoiron/sqlx", "Conn", true, "SelectContext", "", "", "Argument[1]", "database", "manual"], + ["github.com/jmoiron/sqlx", "DB", true, "Get", "", "", "Argument[0]", "database", "manual"], + ["github.com/jmoiron/sqlx", "DB", true, "GetContext", "", "", "Argument[1]", "database", "manual"], + ["github.com/jmoiron/sqlx", "DB", true, "NamedQuery", "", "", "ReturnValue[0]", "database", "manual"], + ["github.com/jmoiron/sqlx", "DB", true, "NamedQueryContext", "", "", "ReturnValue[0]", "database", "manual"], + ["github.com/jmoiron/sqlx", "DB", true, "QueryRowx", "", "", "ReturnValue[0]", "database", "manual"], + ["github.com/jmoiron/sqlx", "DB", true, "QueryRowxContext", "", "", "ReturnValue[0]", "database", "manual"], + ["github.com/jmoiron/sqlx", "DB", true, "Queryx", "", "", "ReturnValue[0]", "database", "manual"], + ["github.com/jmoiron/sqlx", "DB", true, "QueryxContext", "", "", "ReturnValue[0]", "database", "manual"], + ["github.com/jmoiron/sqlx", "DB", true, "Select", "", "", "Argument[0]", "database", "manual"], + ["github.com/jmoiron/sqlx", "DB", true, "SelectContext", "", "", "Argument[1]", "database", "manual"], + ["github.com/jmoiron/sqlx", "NamedStmt", true, "Get", "", "", "Argument[0]", "database", "manual"], + ["github.com/jmoiron/sqlx", "NamedStmt", true, "GetContext", "", "", "Argument[1]", "database", "manual"], + ["github.com/jmoiron/sqlx", "NamedStmt", true, "QueryRow", "", "", "ReturnValue[0]", "database", "manual"], + ["github.com/jmoiron/sqlx", "NamedStmt", true, "QueryRowContext", "", "", "ReturnValue[0]", "database", "manual"], + ["github.com/jmoiron/sqlx", "NamedStmt", true, "Query", "", "", "ReturnValue[0]", "database", "manual"], + ["github.com/jmoiron/sqlx", "NamedStmt", true, "QueryContext", "", "", "ReturnValue[0]", "database", "manual"], + ["github.com/jmoiron/sqlx", "NamedStmt", true, "QueryRowx", "", "", "ReturnValue[0]", "database", "manual"], + ["github.com/jmoiron/sqlx", "NamedStmt", true, "QueryRowxContext", "", "", "ReturnValue[0]", "database", "manual"], + ["github.com/jmoiron/sqlx", "NamedStmt", true, "Queryx", "", "", "ReturnValue[0]", "database", "manual"], + ["github.com/jmoiron/sqlx", "NamedStmt", true, "QueryxContext", "", "", "ReturnValue[0]", "database", "manual"], + ["github.com/jmoiron/sqlx", "NamedStmt", true, "Select", "", "", "Argument[0]", "database", "manual"], + ["github.com/jmoiron/sqlx", "NamedStmt", true, "SelectContext", "", "", "Argument[1]", "database", "manual"], + ["github.com/jmoiron/sqlx", "Stmt", true, "Get", "", "", "Argument[0]", "database", "manual"], + ["github.com/jmoiron/sqlx", "Stmt", true, "GetContext", "", "", "Argument[1]", "database", "manual"], + ["github.com/jmoiron/sqlx", "Stmt", true, "QueryRowx", "", "", "ReturnValue[0]", "database", "manual"], + ["github.com/jmoiron/sqlx", "Stmt", true, "QueryRowxContext", "", "", "ReturnValue[0]", "database", "manual"], + ["github.com/jmoiron/sqlx", "Stmt", true, "Queryx", "", "", "ReturnValue[0]", "database", "manual"], + ["github.com/jmoiron/sqlx", "Stmt", true, "QueryxContext", "", "", "ReturnValue[0]", "database", "manual"], + ["github.com/jmoiron/sqlx", "Stmt", true, "Select", "", "", "Argument[0]", "database", "manual"], + ["github.com/jmoiron/sqlx", "Stmt", true, "SelectContext", "", "", "Argument[1]", "database", "manual"], + ["github.com/jmoiron/sqlx", "Tx", true, "Get", "", "", "Argument[0]", "database", "manual"], + ["github.com/jmoiron/sqlx", "Tx", true, "GetContext", "", "", "Argument[1]", "database", "manual"], + ["github.com/jmoiron/sqlx", "Tx", true, "NamedQuery", "", "", "ReturnValue[0]", "database", "manual"], + ["github.com/jmoiron/sqlx", "Tx", true, "QueryRowx", "", "", "ReturnValue[0]", "database", "manual"], + ["github.com/jmoiron/sqlx", "Tx", true, "QueryRowxContext", "", "", "ReturnValue[0]", "database", "manual"], + ["github.com/jmoiron/sqlx", "Tx", true, "Queryx", "", "", "ReturnValue[0]", "database", "manual"], + ["github.com/jmoiron/sqlx", "Tx", true, "QueryxContext", "", "", "ReturnValue[0]", "database", "manual"], + ["github.com/jmoiron/sqlx", "Tx", true, "Select", "", "", "Argument[0]", "database", "manual"], + ["github.com/jmoiron/sqlx", "Tx", true, "SelectContext", "", "", "Argument[1]", "database", "manual"] + ] + }, + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "sinkModel" + }, + "data": [ + ["github.com/jmoiron/sqlx", "DB", true, "Get", "", "", "Argument[1]", "sql-injection", "manual"], + ["github.com/jmoiron/sqlx", "DB", true, "MustExec", "", "", "Argument[0]", "sql-injection", "manual"], + ["github.com/jmoiron/sqlx", "DB", true, "NamedExec", "", "", "Argument[0]", "sql-injection", "manual"], + ["github.com/jmoiron/sqlx", "DB", true, "NamedQuery", "", "", "Argument[0]", "sql-injection", "manual"], + ["github.com/jmoiron/sqlx", "DB", true, "Queryx", "", "", "Argument[0]", "sql-injection", "manual"], + ["github.com/jmoiron/sqlx", "DB", true, "Select", "", "", "Argument[1]", "sql-injection", "manual"], + ["github.com/jmoiron/sqlx", "Tx", true, "Get", "", "", "Argument[1]", "sql-injection", "manual"], + ["github.com/jmoiron/sqlx", "Tx", true, "MustExec", "", "", "Argument[0]", "sql-injection", "manual"], + ["github.com/jmoiron/sqlx", "Tx", true, "NamedExec", "", "", "Argument[0]", "sql-injection", "manual"], + ["github.com/jmoiron/sqlx", "Tx", true, "NamedQuery", "", "", "Argument[0]", "sql-injection", "manual"], + ["github.com/jmoiron/sqlx", "Tx", true, "Queryx", "", "", "Argument[0]", "sql-injection", "manual"], + ["github.com/jmoiron/sqlx", "Tx", true, "Select", "", "", "Argument[1]", "sql-injection", "manual"] + ] + }, + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "summaryModel" + }, + "data": [ + ["github.com/jmoiron/sqlx", "", true, "MapScan", "", "", "Argument[0]", "Argument[1]", "taint", "manual"], + ["github.com/jmoiron/sqlx", "", true, "SliceScan", "", "", "Argument[0]", "ReturnValue[0]", "taint", "manual"], + ["github.com/jmoiron/sqlx", "", true, "StructScan", "", "", "Argument[0]", "Argument[1]", "taint", "manual"], + ["github.com/jmoiron/sqlx", "ColScanner", true, "Scan", "", "", "Argument[receiver]", "Argument[0]", "taint", "manual"], + ["github.com/jmoiron/sqlx", "Row", true, "MapScan", "", "", "Argument[receiver]", "Argument[0]", "taint", "manual"], + ["github.com/jmoiron/sqlx", "Row", true, "Scan", "", "", "Argument[receiver]", "Argument[0]", "taint", "manual"], + ["github.com/jmoiron/sqlx", "Row", true, "SliceScan", "", "", "Argument[receiver]", "ReturnValue[0]", "taint", "manual"], + ["github.com/jmoiron/sqlx", "Row", true, "StructScan", "", "", "Argument[receiver]", "Argument[0]", "taint", "manual"], + ["github.com/jmoiron/sqlx", "Rows", true, "MapScan", "", "", "Argument[receiver]", "Argument[0]", "taint", "manual"], + ["github.com/jmoiron/sqlx", "Rows", true, "SliceScan", "", "", "Argument[receiver]", "ReturnValue[0]", "taint", "manual"], + ["github.com/jmoiron/sqlx", "Rows", true, "StructScan", "", "", "Argument[receiver]", "Argument[0]", "taint", "manual"] + ] + } + ] +} diff --git a/go/ql/lib/ext/github.com.jmoiron.sqlx.model.yml b/go/ql/lib/ext/github.com.jmoiron.sqlx.model.yml deleted file mode 100644 index 4936bfd95d9f..000000000000 --- a/go/ql/lib/ext/github.com.jmoiron.sqlx.model.yml +++ /dev/null @@ -1,85 +0,0 @@ -extensions: - - addsTo: - pack: codeql/go-all - extensible: sourceModel - data: - - ["github.com/jmoiron/sqlx", "", True, "Get", "", "", "Argument[1]", "database", "manual"] - - ["github.com/jmoiron/sqlx", "", True, "GetContext", "", "", "Argument[2]", "database", "manual"] - - ["github.com/jmoiron/sqlx", "", True, "NamedQuery", "", "", "ReturnValue[0]", "database", "manual"] - - ["github.com/jmoiron/sqlx", "", True, "NamedQueryContext", "", "", "ReturnValue[0]", "database", "manual"] - - ["github.com/jmoiron/sqlx", "", True, "Select", "", "", "Argument[1]", "database", "manual"] - - ["github.com/jmoiron/sqlx", "", True, "SelectContext", "", "", "Argument[2]", "database", "manual"] - - ["github.com/jmoiron/sqlx", "Conn", True, "GetContext", "", "", "Argument[1]", "database", "manual"] - - ["github.com/jmoiron/sqlx", "Conn", True, "QueryRowxContext", "", "", "ReturnValue", "database", "manual"] - - ["github.com/jmoiron/sqlx", "Conn", True, "QueryxContext", "", "", "ReturnValue[0]", "database", "manual"] - - ["github.com/jmoiron/sqlx", "Conn", True, "SelectContext", "", "", "Argument[1]", "database", "manual"] - - ["github.com/jmoiron/sqlx", "DB", True, "Get", "", "", "Argument[0]", "database", "manual"] - - ["github.com/jmoiron/sqlx", "DB", True, "GetContext", "", "", "Argument[1]", "database", "manual"] - - ["github.com/jmoiron/sqlx", "DB", True, "NamedQuery", "", "", "ReturnValue[0]", "database", "manual"] - - ["github.com/jmoiron/sqlx", "DB", True, "NamedQueryContext", "", "", "ReturnValue[0]", "database", "manual"] - - ["github.com/jmoiron/sqlx", "DB", True, "QueryRowx", "", "", "ReturnValue[0]", "database", "manual"] - - ["github.com/jmoiron/sqlx", "DB", True, "QueryRowxContext", "", "", "ReturnValue[0]", "database", "manual"] - - ["github.com/jmoiron/sqlx", "DB", True, "Queryx", "", "", "ReturnValue[0]", "database", "manual"] - - ["github.com/jmoiron/sqlx", "DB", True, "QueryxContext", "", "", "ReturnValue[0]", "database", "manual"] - - ["github.com/jmoiron/sqlx", "DB", True, "Select", "", "", "Argument[0]", "database", "manual"] - - ["github.com/jmoiron/sqlx", "DB", True, "SelectContext", "", "", "Argument[1]", "database", "manual"] - - ["github.com/jmoiron/sqlx", "NamedStmt", True, "Get", "", "", "Argument[0]", "database", "manual"] - - ["github.com/jmoiron/sqlx", "NamedStmt", True, "GetContext", "", "", "Argument[1]", "database", "manual"] - - ["github.com/jmoiron/sqlx", "NamedStmt", True, "QueryRow", "", "", "ReturnValue[0]", "database", "manual"] - - ["github.com/jmoiron/sqlx", "NamedStmt", True, "QueryRowContext", "", "", "ReturnValue[0]", "database", "manual"] - - ["github.com/jmoiron/sqlx", "NamedStmt", True, "Query", "", "", "ReturnValue[0]", "database", "manual"] - - ["github.com/jmoiron/sqlx", "NamedStmt", True, "QueryContext", "", "", "ReturnValue[0]", "database", "manual"] - - ["github.com/jmoiron/sqlx", "NamedStmt", True, "QueryRowx", "", "", "ReturnValue[0]", "database", "manual"] - - ["github.com/jmoiron/sqlx", "NamedStmt", True, "QueryRowxContext", "", "", "ReturnValue[0]", "database", "manual"] - - ["github.com/jmoiron/sqlx", "NamedStmt", True, "Queryx", "", "", "ReturnValue[0]", "database", "manual"] - - ["github.com/jmoiron/sqlx", "NamedStmt", True, "QueryxContext", "", "", "ReturnValue[0]", "database", "manual"] - - ["github.com/jmoiron/sqlx", "NamedStmt", True, "Select", "", "", "Argument[0]", "database", "manual"] - - ["github.com/jmoiron/sqlx", "NamedStmt", True, "SelectContext", "", "", "Argument[1]", "database", "manual"] - - ["github.com/jmoiron/sqlx", "Stmt", True, "Get", "", "", "Argument[0]", "database", "manual"] - - ["github.com/jmoiron/sqlx", "Stmt", True, "GetContext", "", "", "Argument[1]", "database", "manual"] - - ["github.com/jmoiron/sqlx", "Stmt", True, "QueryRowx", "", "", "ReturnValue[0]", "database", "manual"] - - ["github.com/jmoiron/sqlx", "Stmt", True, "QueryRowxContext", "", "", "ReturnValue[0]", "database", "manual"] - - ["github.com/jmoiron/sqlx", "Stmt", True, "Queryx", "", "", "ReturnValue[0]", "database", "manual"] - - ["github.com/jmoiron/sqlx", "Stmt", True, "QueryxContext", "", "", "ReturnValue[0]", "database", "manual"] - - ["github.com/jmoiron/sqlx", "Stmt", True, "Select", "", "", "Argument[0]", "database", "manual"] - - ["github.com/jmoiron/sqlx", "Stmt", True, "SelectContext", "", "", "Argument[1]", "database", "manual"] - - ["github.com/jmoiron/sqlx", "Tx", True, "Get", "", "", "Argument[0]", "database", "manual"] - - ["github.com/jmoiron/sqlx", "Tx", True, "GetContext", "", "", "Argument[1]", "database", "manual"] - - ["github.com/jmoiron/sqlx", "Tx", True, "NamedQuery", "", "", "ReturnValue[0]", "database", "manual"] - - ["github.com/jmoiron/sqlx", "Tx", True, "QueryRowx", "", "", "ReturnValue[0]", "database", "manual"] - - ["github.com/jmoiron/sqlx", "Tx", True, "QueryRowxContext", "", "", "ReturnValue[0]", "database", "manual"] - - ["github.com/jmoiron/sqlx", "Tx", True, "Queryx", "", "", "ReturnValue[0]", "database", "manual"] - - ["github.com/jmoiron/sqlx", "Tx", True, "QueryxContext", "", "", "ReturnValue[0]", "database", "manual"] - - ["github.com/jmoiron/sqlx", "Tx", True, "Select", "", "", "Argument[0]", "database", "manual"] - - ["github.com/jmoiron/sqlx", "Tx", True, "SelectContext", "", "", "Argument[1]", "database", "manual"] - - addsTo: - pack: codeql/go-all - extensible: sinkModel - data: - - ["github.com/jmoiron/sqlx", "DB", True, "Get", "", "", "Argument[1]", "sql-injection", "manual"] - - ["github.com/jmoiron/sqlx", "DB", True, "MustExec", "", "", "Argument[0]", "sql-injection", "manual"] - - ["github.com/jmoiron/sqlx", "DB", True, "NamedExec", "", "", "Argument[0]", "sql-injection", "manual"] - - ["github.com/jmoiron/sqlx", "DB", True, "NamedQuery", "", "", "Argument[0]", "sql-injection", "manual"] - - ["github.com/jmoiron/sqlx", "DB", True, "Queryx", "", "", "Argument[0]", "sql-injection", "manual"] - - ["github.com/jmoiron/sqlx", "DB", True, "Select", "", "", "Argument[1]", "sql-injection", "manual"] - - ["github.com/jmoiron/sqlx", "Tx", True, "Get", "", "", "Argument[1]", "sql-injection", "manual"] - - ["github.com/jmoiron/sqlx", "Tx", True, "MustExec", "", "", "Argument[0]", "sql-injection", "manual"] - - ["github.com/jmoiron/sqlx", "Tx", True, "NamedExec", "", "", "Argument[0]", "sql-injection", "manual"] - - ["github.com/jmoiron/sqlx", "Tx", True, "NamedQuery", "", "", "Argument[0]", "sql-injection", "manual"] - - ["github.com/jmoiron/sqlx", "Tx", True, "Queryx", "", "", "Argument[0]", "sql-injection", "manual"] - - ["github.com/jmoiron/sqlx", "Tx", True, "Select", "", "", "Argument[1]", "sql-injection", "manual"] - - addsTo: - pack: codeql/go-all - extensible: summaryModel - data: - - ["github.com/jmoiron/sqlx", "", True, "MapScan", "", "", "Argument[0]", "Argument[1]", "taint", "manual"] - - ["github.com/jmoiron/sqlx", "", True, "SliceScan", "", "", "Argument[0]", "ReturnValue[0]", "taint", "manual"] - - ["github.com/jmoiron/sqlx", "", True, "StructScan", "", "", "Argument[0]", "Argument[1]", "taint", "manual"] - - ["github.com/jmoiron/sqlx", "ColScanner", True, "Scan", "", "", "Argument[receiver]", "Argument[0]", "taint", "manual"] - - ["github.com/jmoiron/sqlx", "Row", True, "MapScan", "", "", "Argument[receiver]", "Argument[0]", "taint", "manual"] - - ["github.com/jmoiron/sqlx", "Row", True, "Scan", "", "", "Argument[receiver]", "Argument[0]", "taint", "manual"] - - ["github.com/jmoiron/sqlx", "Row", True, "SliceScan", "", "", "Argument[receiver]", "ReturnValue[0]", "taint", "manual"] - - ["github.com/jmoiron/sqlx", "Row", True, "StructScan", "", "", "Argument[receiver]", "Argument[0]", "taint", "manual"] - - ["github.com/jmoiron/sqlx", "Rows", True, "MapScan", "", "", "Argument[receiver]", "Argument[0]", "taint", "manual"] - - ["github.com/jmoiron/sqlx", "Rows", True, "SliceScan", "", "", "Argument[receiver]", "ReturnValue[0]", "taint", "manual"] - - ["github.com/jmoiron/sqlx", "Rows", True, "StructScan", "", "", "Argument[receiver]", "Argument[0]", "taint", "manual"] diff --git a/go/ql/lib/ext/github.com.joho.godotenv.model.json b/go/ql/lib/ext/github.com.joho.godotenv.model.json new file mode 100644 index 000000000000..408a81c4f9f5 --- /dev/null +++ b/go/ql/lib/ext/github.com.joho.godotenv.model.json @@ -0,0 +1,16 @@ +{ + "extensions": [ + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "sourceModel" + }, + "data": [ + ["github.com/joho/godotenv", "", false, "Parse", "", "", "ReturnValue", "environment", "manual"], + ["github.com/joho/godotenv", "", false, "Read", "", "", "ReturnValue", "environment", "manual"], + ["github.com/joho/godotenv", "", false, "Unmarshal", "", "", "ReturnValue", "environment", "manual"], + ["github.com/joho/godotenv", "", false, "UnmarshalBytes", "", "", "ReturnValue", "environment", "manual"] + ] + } + ] +} diff --git a/go/ql/lib/ext/github.com.joho.godotenv.model.yml b/go/ql/lib/ext/github.com.joho.godotenv.model.yml deleted file mode 100644 index 8bd62c5dd0b1..000000000000 --- a/go/ql/lib/ext/github.com.joho.godotenv.model.yml +++ /dev/null @@ -1,9 +0,0 @@ -extensions: - - addsTo: - pack: codeql/go-all - extensible: sourceModel - data: - - ["github.com/joho/godotenv", "", False, "Parse", "", "", "ReturnValue", "environment", "manual"] - - ["github.com/joho/godotenv", "", False, "Read", "", "", "ReturnValue", "environment", "manual"] - - ["github.com/joho/godotenv", "", False, "Unmarshal", "", "", "ReturnValue", "environment", "manual"] - - ["github.com/joho/godotenv", "", False, "UnmarshalBytes", "", "", "ReturnValue", "environment", "manual"] diff --git a/go/ql/lib/ext/github.com.json-iterator.go.model.json b/go/ql/lib/ext/github.com.json-iterator.go.model.json new file mode 100644 index 000000000000..c594c013efd9 --- /dev/null +++ b/go/ql/lib/ext/github.com.json-iterator.go.model.json @@ -0,0 +1,16 @@ +{ + "extensions": [ + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "summaryModel" + }, + "data": [ + ["github.com/json-iterator/go", "", false, "Unmarshal", "", "", "Argument[0]", "Argument[1]", "taint", "manual"], + ["github.com/json-iterator/go", "", false, "UnmarshalFromString", "", "", "Argument[0]", "Argument[1]", "taint", "manual"], + ["github.com/json-iterator/go", "API", true, "Unmarshal", "", "", "Argument[0]", "Argument[1]", "taint", "manual"], + ["github.com/json-iterator/go", "API", true, "UnmarshalFromString", "", "", "Argument[0]", "Argument[1]", "taint", "manual"] + ] + } + ] +} diff --git a/go/ql/lib/ext/github.com.json-iterator.go.model.yml b/go/ql/lib/ext/github.com.json-iterator.go.model.yml deleted file mode 100644 index bf974a171097..000000000000 --- a/go/ql/lib/ext/github.com.json-iterator.go.model.yml +++ /dev/null @@ -1,9 +0,0 @@ -extensions: - - addsTo: - pack: codeql/go-all - extensible: summaryModel - data: - - ["github.com/json-iterator/go", "", False, "Unmarshal", "", "", "Argument[0]", "Argument[1]", "taint", "manual"] - - ["github.com/json-iterator/go", "", False, "UnmarshalFromString", "", "", "Argument[0]", "Argument[1]", "taint", "manual"] - - ["github.com/json-iterator/go", "API", True, "Unmarshal", "", "", "Argument[0]", "Argument[1]", "taint", "manual"] - - ["github.com/json-iterator/go", "API", True, "UnmarshalFromString", "", "", "Argument[0]", "Argument[1]", "taint", "manual"] diff --git a/go/ql/lib/ext/github.com.kataras.iris.context.model.json b/go/ql/lib/ext/github.com.kataras.iris.context.model.json new file mode 100644 index 000000000000..04ee0bcc72ca --- /dev/null +++ b/go/ql/lib/ext/github.com.kataras.iris.context.model.json @@ -0,0 +1,28 @@ +{ + "extensions": [ + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "packageGrouping" + }, + "data": [ + ["iris-context", "github.com/kataras/iris/context"], + ["iris-context", "github.com/kataras/iris/server/web/context"] + ] + }, + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "sinkModel" + }, + "data": [ + ["group:iris-context", "Context", true, "SendFile", "", "", "Argument[0]", "path-injection", "manual"], + ["group:iris-context", "Context", true, "ServeFile", "", "", "Argument[0]", "path-injection", "manual"], + ["group:iris-context", "Context", true, "SendFileWithRate", "", "", "Argument[0]", "path-injection", "manual"], + ["group:iris-context", "Context", true, "ServeFileWithRate", "", "", "Argument[0]", "path-injection", "manual"], + ["group:iris-context", "Context", true, "UploadFormFiles", "", "", "Argument[0]", "path-injection", "manual"], + ["group:iris-context", "Context", true, "SaveFormFile", "", "", "Argument[1]", "path-injection", "manual"] + ] + } + ] +} diff --git a/go/ql/lib/ext/github.com.kataras.iris.context.model.yml b/go/ql/lib/ext/github.com.kataras.iris.context.model.yml deleted file mode 100644 index 5b5b7e793e2e..000000000000 --- a/go/ql/lib/ext/github.com.kataras.iris.context.model.yml +++ /dev/null @@ -1,17 +0,0 @@ -extensions: - - addsTo: - pack: codeql/go-all - extensible: packageGrouping - data: - - ["iris-context", "github.com/kataras/iris/context"] - - ["iris-context", "github.com/kataras/iris/server/web/context"] - - addsTo: - pack: codeql/go-all - extensible: sinkModel - data: - - ["group:iris-context", "Context", True, "SendFile", "", "", "Argument[0]", "path-injection", "manual"] - - ["group:iris-context", "Context", True, "ServeFile", "", "", "Argument[0]", "path-injection", "manual"] - - ["group:iris-context", "Context", True, "SendFileWithRate", "", "", "Argument[0]", "path-injection", "manual"] - - ["group:iris-context", "Context", True, "ServeFileWithRate", "", "", "Argument[0]", "path-injection", "manual"] - - ["group:iris-context", "Context", True, "UploadFormFiles", "", "", "Argument[0]", "path-injection", "manual"] - - ["group:iris-context", "Context", True, "SaveFormFile", "", "", "Argument[1]", "path-injection", "manual"] diff --git a/go/ql/lib/ext/github.com.kataras.iris.middleware.jwt.model.json b/go/ql/lib/ext/github.com.kataras.iris.middleware.jwt.model.json new file mode 100644 index 000000000000..e4ba102c2db1 --- /dev/null +++ b/go/ql/lib/ext/github.com.kataras.iris.middleware.jwt.model.json @@ -0,0 +1,14 @@ +{ + "extensions": [ + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "sinkModel" + }, + "data": [ + ["github.com/kataras/iris/middleware/jwt", "", false, "NewSigner", "", "", "Argument[1]", "credentials-key", "manual"], + ["github.com/kataras/iris/middleware/jwt", "Signer", true, "Key", "", "", "", "credentials-key", "manual"] + ] + } + ] +} diff --git a/go/ql/lib/ext/github.com.kataras.iris.middleware.jwt.model.yml b/go/ql/lib/ext/github.com.kataras.iris.middleware.jwt.model.yml deleted file mode 100644 index 5bcce412fd42..000000000000 --- a/go/ql/lib/ext/github.com.kataras.iris.middleware.jwt.model.yml +++ /dev/null @@ -1,7 +0,0 @@ -extensions: - - addsTo: - pack: codeql/go-all - extensible: sinkModel - data: - - ["github.com/kataras/iris/middleware/jwt", "", False, "NewSigner", "", "", "Argument[1]", "credentials-key", "manual"] - - ["github.com/kataras/iris/middleware/jwt", "Signer", True, "Key", "", "", "", "credentials-key", "manual"] diff --git a/go/ql/lib/ext/github.com.kataras.jwt.model.json b/go/ql/lib/ext/github.com.kataras.jwt.model.json new file mode 100644 index 000000000000..b3ec9019cda4 --- /dev/null +++ b/go/ql/lib/ext/github.com.kataras.jwt.model.json @@ -0,0 +1,17 @@ +{ + "extensions": [ + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "sinkModel" + }, + "data": [ + ["github.com/kataras/jwt", "Keys", true, "Register", "", "", "Argument[3]", "credentials-key", "manual"], + ["github.com/kataras/jwt", "", false, "Sign", "", "", "Argument[1]", "credentials-key", "manual"], + ["github.com/kataras/jwt", "", false, "SignEncrypted", "", "", "Argument[1]", "credentials-key", "manual"], + ["github.com/kataras/jwt", "", false, "SignEncryptedWithHeader", "", "", "Argument[1]", "credentials-key", "manual"], + ["github.com/kataras/jwt", "", false, "SignWithHeader", "", "", "Argument[1]", "credentials-key", "manual"] + ] + } + ] +} diff --git a/go/ql/lib/ext/github.com.kataras.jwt.model.yml b/go/ql/lib/ext/github.com.kataras.jwt.model.yml deleted file mode 100644 index 3ecb1e0e577a..000000000000 --- a/go/ql/lib/ext/github.com.kataras.jwt.model.yml +++ /dev/null @@ -1,10 +0,0 @@ -extensions: - - addsTo: - pack: codeql/go-all - extensible: sinkModel - data: - - ["github.com/kataras/jwt", "Keys", True, "Register", "", "", "Argument[3]", "credentials-key", "manual"] - - ["github.com/kataras/jwt", "", False, "Sign", "", "", "Argument[1]", "credentials-key", "manual"] - - ["github.com/kataras/jwt", "", False, "SignEncrypted", "", "", "Argument[1]", "credentials-key", "manual"] - - ["github.com/kataras/jwt", "", False, "SignEncryptedWithHeader", "", "", "Argument[1]", "credentials-key", "manual"] - - ["github.com/kataras/jwt", "", False, "SignWithHeader", "", "", "Argument[1]", "credentials-key", "manual"] diff --git a/go/ql/lib/ext/github.com.kelseyhightower.envconfig.model.json b/go/ql/lib/ext/github.com.kelseyhightower.envconfig.model.json new file mode 100644 index 000000000000..a3cc0682a0b7 --- /dev/null +++ b/go/ql/lib/ext/github.com.kelseyhightower.envconfig.model.json @@ -0,0 +1,18 @@ +{ + "extensions": [ + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "sourceModel" + }, + "data": [ + ["github.com/kelseyhightower/envconfig", "", false, "CheckDisallowed", "", "", "Argument[1]", "environment", "manual"], + ["github.com/kelseyhightower/envconfig", "", false, "MustProcess", "", "", "Argument[1]", "environment", "manual"], + ["github.com/kelseyhightower/envconfig", "", false, "Process", "", "", "Argument[1]", "environment", "manual"], + ["github.com/kelseyhightower/envconfig", "", false, "Usage", "", "", "Argument[1]", "environment", "manual"], + ["github.com/kelseyhightower/envconfig", "", false, "Usagef", "", "", "Argument[1]", "environment", "manual"], + ["github.com/kelseyhightower/envconfig", "", false, "Usaget", "", "", "Argument[1]", "environment", "manual"] + ] + } + ] +} diff --git a/go/ql/lib/ext/github.com.kelseyhightower.envconfig.model.yml b/go/ql/lib/ext/github.com.kelseyhightower.envconfig.model.yml deleted file mode 100644 index 3b1ba531849e..000000000000 --- a/go/ql/lib/ext/github.com.kelseyhightower.envconfig.model.yml +++ /dev/null @@ -1,11 +0,0 @@ -extensions: - - addsTo: - pack: codeql/go-all - extensible: sourceModel - data: - - ["github.com/kelseyhightower/envconfig", "", False, "CheckDisallowed", "", "", "Argument[1]", "environment", "manual"] - - ["github.com/kelseyhightower/envconfig", "", False, "MustProcess", "", "", "Argument[1]", "environment", "manual"] - - ["github.com/kelseyhightower/envconfig", "", False, "Process", "", "", "Argument[1]", "environment", "manual"] - - ["github.com/kelseyhightower/envconfig", "", False, "Usage", "", "", "Argument[1]", "environment", "manual"] - - ["github.com/kelseyhightower/envconfig", "", False, "Usagef", "", "", "Argument[1]", "environment", "manual"] - - ["github.com/kelseyhightower/envconfig", "", False, "Usaget", "", "", "Argument[1]", "environment", "manual"] diff --git a/go/ql/lib/ext/github.com.labstack.echo.model.json b/go/ql/lib/ext/github.com.labstack.echo.model.json new file mode 100644 index 000000000000..1ab7cd4d4e3d --- /dev/null +++ b/go/ql/lib/ext/github.com.labstack.echo.model.json @@ -0,0 +1,47 @@ +{ + "extensions": [ + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "sinkModel" + }, + "data": [ + // path-injection + ["github.com/labstack/echo", "Context", true, "Attachment", "", "", "Argument[0]", "path-injection", "manual"], + ["github.com/labstack/echo", "Context", true, "File", "", "", "Argument[0]", "path-injection", "manual"], + // url-redirection + ["github.com/labstack/echo", "Context", true, "Redirect", "", "", "Argument[1]", "url-redirection", "manual"] + ] + }, + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "summaryModel" + }, + "data": [ + ["github.com/labstack/echo", "Context", true, "Get", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"], + ["github.com/labstack/echo", "Context", true, "Set", "", "", "Argument[1]", "Argument[receiver]", "taint", "manual"] + ] + }, + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "sourceModel" + }, + "data": [ + ["github.com/labstack/echo", "Context", true, "Bind", "", "", "Argument[0]", "remote", "manual"], + ["github.com/labstack/echo", "Context", true, "Param", "", "", "ReturnValue[0]", "remote", "manual"], + ["github.com/labstack/echo", "Context", true, "ParamValues", "", "", "ReturnValue[0]", "remote", "manual"], + ["github.com/labstack/echo", "Context", true, "QueryParam", "", "", "ReturnValue[0]", "remote", "manual"], + ["github.com/labstack/echo", "Context", true, "QueryParams", "", "", "ReturnValue[0]", "remote", "manual"], + ["github.com/labstack/echo", "Context", true, "QueryString", "", "", "ReturnValue[0]", "remote", "manual"], + ["github.com/labstack/echo", "Context", true, "FormValue", "", "", "ReturnValue[0]", "remote", "manual"], + ["github.com/labstack/echo", "Context", true, "FormParams", "", "", "ReturnValue[0]", "remote", "manual"], + ["github.com/labstack/echo", "Context", true, "FormFile", "", "", "ReturnValue[0]", "remote", "manual"], + ["github.com/labstack/echo", "Context", true, "MultipartForm", "", "", "ReturnValue[0]", "remote", "manual"], + ["github.com/labstack/echo", "Context", true, "Cookie", "", "", "ReturnValue[0]", "remote", "manual"], + ["github.com/labstack/echo", "Context", true, "Cookies", "", "", "ReturnValue[0]", "remote", "manual"] + ] + } + ] +} diff --git a/go/ql/lib/ext/github.com.labstack.echo.model.yml b/go/ql/lib/ext/github.com.labstack.echo.model.yml deleted file mode 100644 index 830360bbdb2d..000000000000 --- a/go/ql/lib/ext/github.com.labstack.echo.model.yml +++ /dev/null @@ -1,33 +0,0 @@ -extensions: - - addsTo: - pack: codeql/go-all - extensible: sinkModel - data: - # path-injection - - ["github.com/labstack/echo", "Context", True, "Attachment", "", "", "Argument[0]", "path-injection", "manual"] - - ["github.com/labstack/echo", "Context", True, "File", "", "", "Argument[0]", "path-injection", "manual"] - # url-redirection - - ["github.com/labstack/echo", "Context", True, "Redirect", "", "", "Argument[1]", "url-redirection", "manual"] - - addsTo: - pack: codeql/go-all - extensible: summaryModel - data: - - ["github.com/labstack/echo", "Context", True, "Get", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] - - ["github.com/labstack/echo", "Context", True, "Set", "", "", "Argument[1]", "Argument[receiver]", "taint", "manual"] - - - addsTo: - pack: codeql/go-all - extensible: sourceModel - data: - - ["github.com/labstack/echo", "Context", True, "Bind", "", "", "Argument[0]", "remote", "manual"] - - ["github.com/labstack/echo", "Context", True, "Param", "", "", "ReturnValue[0]", "remote", "manual"] - - ["github.com/labstack/echo", "Context", True, "ParamValues", "", "", "ReturnValue[0]", "remote", "manual"] - - ["github.com/labstack/echo", "Context", True, "QueryParam", "", "", "ReturnValue[0]", "remote", "manual"] - - ["github.com/labstack/echo", "Context", True, "QueryParams", "", "", "ReturnValue[0]", "remote", "manual"] - - ["github.com/labstack/echo", "Context", True, "QueryString", "", "", "ReturnValue[0]", "remote", "manual"] - - ["github.com/labstack/echo", "Context", True, "FormValue", "", "", "ReturnValue[0]", "remote", "manual"] - - ["github.com/labstack/echo", "Context", True, "FormParams", "", "", "ReturnValue[0]", "remote", "manual"] - - ["github.com/labstack/echo", "Context", True, "FormFile", "", "", "ReturnValue[0]", "remote", "manual"] - - ["github.com/labstack/echo", "Context", True, "MultipartForm", "", "", "ReturnValue[0]", "remote", "manual"] - - ["github.com/labstack/echo", "Context", True, "Cookie", "", "", "ReturnValue[0]", "remote", "manual"] - - ["github.com/labstack/echo", "Context", True, "Cookies", "", "", "ReturnValue[0]", "remote", "manual"] diff --git a/go/ql/lib/ext/github.com.lestrrat-go.jwx.jwk.model.json b/go/ql/lib/ext/github.com.lestrrat-go.jwx.jwk.model.json new file mode 100644 index 000000000000..e4b48553f44a --- /dev/null +++ b/go/ql/lib/ext/github.com.lestrrat-go.jwx.jwk.model.json @@ -0,0 +1,13 @@ +{ + "extensions": [ + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "sinkModel" + }, + "data": [ + ["github.com/lestrrat-go/jwx/jwk", "", false, "New", "", "", "Argument[0]", "credentials-key", "manual"] + ] + } + ] +} diff --git a/go/ql/lib/ext/github.com.lestrrat-go.jwx.jwk.model.yml b/go/ql/lib/ext/github.com.lestrrat-go.jwx.jwk.model.yml deleted file mode 100644 index ed2b3f310539..000000000000 --- a/go/ql/lib/ext/github.com.lestrrat-go.jwx.jwk.model.yml +++ /dev/null @@ -1,6 +0,0 @@ -extensions: - - addsTo: - pack: codeql/go-all - extensible: sinkModel - data: - - ["github.com/lestrrat-go/jwx/jwk", "", False, "New", "", "", "Argument[0]", "credentials-key", "manual"] diff --git a/go/ql/lib/ext/github.com.lestrrat-go.jwx.model.json b/go/ql/lib/ext/github.com.lestrrat-go.jwx.model.json new file mode 100644 index 000000000000..eed50fae584a --- /dev/null +++ b/go/ql/lib/ext/github.com.lestrrat-go.jwx.model.json @@ -0,0 +1,13 @@ +{ + "extensions": [ + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "sinkModel" + }, + "data": [ + ["github.com/lestrrat-go/jwx", "", false, "New", "", "", "Argument[0]", "credentials-key", "manual"] + ] + } + ] +} diff --git a/go/ql/lib/ext/github.com.lestrrat-go.jwx.model.yml b/go/ql/lib/ext/github.com.lestrrat-go.jwx.model.yml deleted file mode 100644 index 78162bf4855a..000000000000 --- a/go/ql/lib/ext/github.com.lestrrat-go.jwx.model.yml +++ /dev/null @@ -1,6 +0,0 @@ -extensions: - - addsTo: - pack: codeql/go-all - extensible: sinkModel - data: - - ["github.com/lestrrat-go/jwx", "", False, "New", "", "", "Argument[0]", "credentials-key", "manual"] diff --git a/go/ql/lib/ext/github.com.lestrrat-go.libxml2.parser.model.json b/go/ql/lib/ext/github.com.lestrrat-go.libxml2.parser.model.json new file mode 100644 index 000000000000..3a5ba49a0f3d --- /dev/null +++ b/go/ql/lib/ext/github.com.lestrrat-go.libxml2.parser.model.json @@ -0,0 +1,15 @@ +{ + "extensions": [ + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "sinkModel" + }, + "data": [ + ["github.com/lestrrat-go/libxml2/parser", "Parser", true, "Parse", "", "", "Argument[0]", "xpath-injection", "manual"], + ["github.com/lestrrat-go/libxml2/parser", "Parser", true, "ParseReader", "", "", "Argument[0]", "xpath-injection", "manual"], + ["github.com/lestrrat-go/libxml2/parser", "Parser", true, "ParseString", "", "", "Argument[0]", "xpath-injection", "manual"] + ] + } + ] +} diff --git a/go/ql/lib/ext/github.com.lestrrat-go.libxml2.parser.model.yml b/go/ql/lib/ext/github.com.lestrrat-go.libxml2.parser.model.yml deleted file mode 100644 index 90a6b381b640..000000000000 --- a/go/ql/lib/ext/github.com.lestrrat-go.libxml2.parser.model.yml +++ /dev/null @@ -1,8 +0,0 @@ -extensions: - - addsTo: - pack: codeql/go-all - extensible: sinkModel - data: - - ["github.com/lestrrat-go/libxml2/parser", "Parser", True, "Parse", "", "", "Argument[0]", "xpath-injection", "manual"] - - ["github.com/lestrrat-go/libxml2/parser", "Parser", True, "ParseReader", "", "", "Argument[0]", "xpath-injection", "manual"] - - ["github.com/lestrrat-go/libxml2/parser", "Parser", True, "ParseString", "", "", "Argument[0]", "xpath-injection", "manual"] diff --git a/go/ql/lib/ext/github.com.lestrrat.go-jwx.jwk.model.json b/go/ql/lib/ext/github.com.lestrrat.go-jwx.jwk.model.json new file mode 100644 index 000000000000..6053c460fc1b --- /dev/null +++ b/go/ql/lib/ext/github.com.lestrrat.go-jwx.jwk.model.json @@ -0,0 +1,13 @@ +{ + "extensions": [ + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "sinkModel" + }, + "data": [ + ["github.com/lestrrat/go-jwx/jwk", "", false, "New", "", "", "Argument[0]", "credentials-key", "manual"] + ] + } + ] +} diff --git a/go/ql/lib/ext/github.com.lestrrat.go-jwx.jwk.model.yml b/go/ql/lib/ext/github.com.lestrrat.go-jwx.jwk.model.yml deleted file mode 100644 index e4d7fe43de69..000000000000 --- a/go/ql/lib/ext/github.com.lestrrat.go-jwx.jwk.model.yml +++ /dev/null @@ -1,6 +0,0 @@ -extensions: - - addsTo: - pack: codeql/go-all - extensible: sinkModel - data: - - ["github.com/lestrrat/go-jwx/jwk", "", False, "New", "", "", "Argument[0]", "credentials-key", "manual"] diff --git a/go/ql/lib/ext/github.com.masterminds.squirrel.model.json b/go/ql/lib/ext/github.com.masterminds.squirrel.model.json new file mode 100644 index 000000000000..c5a1144c9a94 --- /dev/null +++ b/go/ql/lib/ext/github.com.masterminds.squirrel.model.json @@ -0,0 +1,94 @@ +{ + "extensions": [ + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "packageGrouping" + }, + "data": [ + ["squirrel", "github.com/Masterminds/squirrel"], + ["squirrel", "gopkg.in/Masterminds/squirrel"], + ["squirrel", "github.com/lann/squirrel"] + ] + }, + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "sourceModel" + }, + "data": [ + ["group:squirrel", "", true, "QueryContextWith", "", "", "ReturnValue[0]", "database", "manual"], + ["group:squirrel", "", true, "QueryRowContextWith", "", "", "ReturnValue", "database", "manual"], + ["group:squirrel", "", true, "QueryRowWith", "", "", "ReturnValue", "database", "manual"], + ["group:squirrel", "", true, "QueryWith", "", "", "ReturnValue[0]", "database", "manual"], + ["group:squirrel", "DeleteBuilder", true, "Query", "", "", "ReturnValue[0]", "database", "manual"], + ["group:squirrel", "DeleteBuilder", true, "QueryContext", "", "", "ReturnValue[0]", "database", "manual"], + ["group:squirrel", "DeleteBuilder", true, "QueryRowContext", "", "", "ReturnValue[0]", "database", "manual"], + ["group:squirrel", "InsertBuilder", true, "Query", "", "", "ReturnValue[0]", "database", "manual"], + ["group:squirrel", "InsertBuilder", true, "QueryContext", "", "", "ReturnValue[0]", "database", "manual"], + ["group:squirrel", "InsertBuilder", true, "QueryRow", "", "", "ReturnValue[0]", "database", "manual"], + ["group:squirrel", "InsertBuilder", true, "QueryRowContext", "", "", "ReturnValue[0]", "database", "manual"], + ["group:squirrel", "QueryRower", true, "QueryRow", "", "", "ReturnValue[0]", "database", "manual"], + ["group:squirrel", "QueryRowerContext", true, "QueryRowContext", "", "", "ReturnValue[0]", "database", "manual"], + ["group:squirrel", "Queryer", true, "Query", "", "", "ReturnValue[0]", "database", "manual"], + ["group:squirrel", "QueryerContext", true, "QueryContext", "", "", "ReturnValue[0]", "database", "manual"], + ["group:squirrel", "SelectBuilder", true, "Query", "", "", "ReturnValue[0]", "database", "manual"], + ["group:squirrel", "SelectBuilder", true, "QueryContext", "", "", "ReturnValue[0]", "database", "manual"], + ["group:squirrel", "SelectBuilder", true, "QueryRow", "", "", "ReturnValue[0]", "database", "manual"], + ["group:squirrel", "SelectBuilder", true, "QueryRowContext", "", "", "ReturnValue[0]", "database", "manual"], + ["group:squirrel", "StdSql", true, "Query", "", "", "ReturnValue[0]", "database", "manual"], + ["group:squirrel", "StdSql", true, "QueryRow", "", "", "ReturnValue", "database", "manual"], + ["group:squirrel", "StdSqlCtx", true, "QueryContext", "", "", "ReturnValue[0]", "database", "manual"], + ["group:squirrel", "StdSqlCtx", true, "QueryRowContext", "", "", "ReturnValue", "database", "manual"], + ["group:squirrel", "UpdateBuilder", true, "Query", "", "", "ReturnValue[0]", "database", "manual"], + ["group:squirrel", "UpdateBuilder", true, "QueryContext", "", "", "ReturnValue[0]", "database", "manual"], + ["group:squirrel", "UpdateBuilder", true, "QueryRow", "", "", "ReturnValue[0]", "database", "manual"], + ["group:squirrel", "UpdateBuilder", true, "QueryRowContext", "", "", "ReturnValue[0]", "database", "manual"] + ] + }, + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "sinkModel" + }, + "data": [ + ["group:squirrel", "", false, "Delete", "", "", "Argument[0]", "sql-injection", "manual"], + ["group:squirrel", "", false, "Expr", "", "", "Argument[0]", "sql-injection", "manual"], + ["group:squirrel", "", false, "Insert", "", "", "Argument[0]", "sql-injection", "manual"], + ["group:squirrel", "", false, "Select", "", "", "Argument[0]", "sql-injection", "manual"], // TODO: when sources can have access paths, use .ArrayElement + ["group:squirrel", "", false, "Update", "", "", "Argument[0]", "sql-injection", "manual"], // TODO: when sources can have access paths, use .ArrayElement + ["group:squirrel", "DeleteBuilder", true, "From", "", "", "Argument[0]", "sql-injection", "manual"], + ["group:squirrel", "DeleteBuilder", true, "OrderBy", "", "", "Argument[0]", "sql-injection", "manual"], // TODO: when sources can have access paths, use .ArrayElement + ["group:squirrel", "DeleteBuilder", true, "Prefix", "", "", "Argument[0]", "sql-injection", "manual"], + ["group:squirrel", "DeleteBuilder", true, "Suffix", "", "", "Argument[0]", "sql-injection", "manual"], + // DeleteBuilder.Where has to be modeled in QL to avoid FPs when a non-string argument is used + ["group:squirrel", "InsertBuilder", true, "Columns", "", "", "Argument[0]", "sql-injection", "manual"], // TODO: when sources can have access paths, use .ArrayElement + ["group:squirrel", "InsertBuilder", true, "Into", "", "", "Argument[0]", "sql-injection", "manual"], + ["group:squirrel", "InsertBuilder", true, "Options", "", "", "Argument[0]", "sql-injection", "manual"], // TODO: when sources can have access paths, use .ArrayElement + ["group:squirrel", "InsertBuilder", true, "Prefix", "", "", "Argument[0]", "sql-injection", "manual"], + ["group:squirrel", "InsertBuilder", true, "Suffix", "", "", "Argument[0]", "sql-injection", "manual"], + ["group:squirrel", "SelectBuilder", true, "CrossJoin", "", "", "Argument[0]", "sql-injection", "manual"], + ["group:squirrel", "SelectBuilder", true, "Column", "", "", "Argument[0]", "sql-injection", "manual"], + ["group:squirrel", "SelectBuilder", true, "Columns", "", "", "Argument[0]", "sql-injection", "manual"], // TODO: when sources can have access paths, use .ArrayElement + ["group:squirrel", "SelectBuilder", true, "From", "", "", "Argument[0]", "sql-injection", "manual"], + ["group:squirrel", "SelectBuilder", true, "GroupBy", "", "", "Argument[0]", "sql-injection", "manual"], + ["group:squirrel", "SelectBuilder", true, "InnerJoin", "", "", "Argument[0]", "sql-injection", "manual"], + ["group:squirrel", "SelectBuilder", true, "LeftJoin", "", "", "Argument[0]", "sql-injection", "manual"], + ["group:squirrel", "SelectBuilder", true, "Options", "", "", "Argument[0]", "sql-injection", "manual"], // TODO: when sources can have access paths, use .ArrayElement + ["group:squirrel", "SelectBuilder", true, "OrderBy", "", "", "Argument[0]", "sql-injection", "manual"], // TODO: when sources can have access paths, use .ArrayElement + ["group:squirrel", "SelectBuilder", true, "Prefix", "", "", "Argument[0]", "sql-injection", "manual"], + ["group:squirrel", "SelectBuilder", true, "RightJoin", "", "", "Argument[0]", "sql-injection", "manual"], + ["group:squirrel", "SelectBuilder", true, "Suffix", "", "", "Argument[0]", "sql-injection", "manual"], + // SelectBuilder.Where has to be modeled in QL to avoid FPs when a non-string argument is used + ["group:squirrel", "UpdateBuilder", true, "From", "", "", "Argument[0]", "sql-injection", "manual"], + ["group:squirrel", "UpdateBuilder", true, "OrderBy", "", "", "Argument[0]", "sql-injection", "manual"], // TODO: when sources can have access paths, use .ArrayElement + ["group:squirrel", "UpdateBuilder", true, "Prefix", "", "", "Argument[0]", "sql-injection", "manual"], + ["group:squirrel", "UpdateBuilder", true, "Set", "", "", "Argument[0]", "sql-injection", "manual"], + ["group:squirrel", "UpdateBuilder", true, "Suffix", "", "", "Argument[0]", "sql-injection", "manual"], + ["group:squirrel", "UpdateBuilder", true, "Table", "", "", "Argument[0]", "sql-injection", "manual"] + ] + } + ] +} +// UpdateBuilder.Where has to be modeled in QL to avoid FPs when a non-string argument is used +// There are summary models for Row.Scan, RowScanner.Scan, {Insert,Delete,Select,Update}Builder.Scan and {Insert,Delete,Select,Update}Builder.ScanContext modeled in QL diff --git a/go/ql/lib/ext/github.com.masterminds.squirrel.model.yml b/go/ql/lib/ext/github.com.masterminds.squirrel.model.yml deleted file mode 100644 index 3544f0ac3cfd..000000000000 --- a/go/ql/lib/ext/github.com.masterminds.squirrel.model.yml +++ /dev/null @@ -1,84 +0,0 @@ -extensions: - - addsTo: - pack: codeql/go-all - extensible: packageGrouping - data: - - ["squirrel", "github.com/Masterminds/squirrel"] - - ["squirrel", "gopkg.in/Masterminds/squirrel"] - - ["squirrel", "github.com/lann/squirrel"] - - addsTo: - pack: codeql/go-all - extensible: sourceModel - data: - - ["group:squirrel", "", True, "QueryContextWith", "", "", "ReturnValue[0]", "database", "manual"] - - ["group:squirrel", "", True, "QueryRowContextWith", "", "", "ReturnValue", "database", "manual"] - - ["group:squirrel", "", True, "QueryRowWith", "", "", "ReturnValue", "database", "manual"] - - ["group:squirrel", "", True, "QueryWith", "", "", "ReturnValue[0]", "database", "manual"] - - ["group:squirrel", "DeleteBuilder", True, "Query", "", "", "ReturnValue[0]", "database", "manual"] - - ["group:squirrel", "DeleteBuilder", True, "QueryContext", "", "", "ReturnValue[0]", "database", "manual"] - - ["group:squirrel", "DeleteBuilder", True, "QueryRowContext", "", "", "ReturnValue[0]", "database", "manual"] - - ["group:squirrel", "InsertBuilder", True, "Query", "", "", "ReturnValue[0]", "database", "manual"] - - ["group:squirrel", "InsertBuilder", True, "QueryContext", "", "", "ReturnValue[0]", "database", "manual"] - - ["group:squirrel", "InsertBuilder", True, "QueryRow", "", "", "ReturnValue[0]", "database", "manual"] - - ["group:squirrel", "InsertBuilder", True, "QueryRowContext", "", "", "ReturnValue[0]", "database", "manual"] - - ["group:squirrel", "QueryRower", True, "QueryRow", "", "", "ReturnValue[0]", "database", "manual"] - - ["group:squirrel", "QueryRowerContext", True, "QueryRowContext", "", "", "ReturnValue[0]", "database", "manual"] - - ["group:squirrel", "Queryer", True, "Query", "", "", "ReturnValue[0]", "database", "manual"] - - ["group:squirrel", "QueryerContext", True, "QueryContext", "", "", "ReturnValue[0]", "database", "manual"] - - ["group:squirrel", "SelectBuilder", True, "Query", "", "", "ReturnValue[0]", "database", "manual"] - - ["group:squirrel", "SelectBuilder", True, "QueryContext", "", "", "ReturnValue[0]", "database", "manual"] - - ["group:squirrel", "SelectBuilder", True, "QueryRow", "", "", "ReturnValue[0]", "database", "manual"] - - ["group:squirrel", "SelectBuilder", True, "QueryRowContext", "", "", "ReturnValue[0]", "database", "manual"] - - ["group:squirrel", "StdSql", True, "Query", "", "", "ReturnValue[0]", "database", "manual"] - - ["group:squirrel", "StdSql", True, "QueryRow", "", "", "ReturnValue", "database", "manual"] - - ["group:squirrel", "StdSqlCtx", True, "QueryContext", "", "", "ReturnValue[0]", "database", "manual"] - - ["group:squirrel", "StdSqlCtx", True, "QueryRowContext", "", "", "ReturnValue", "database", "manual"] - - ["group:squirrel", "UpdateBuilder", True, "Query", "", "", "ReturnValue[0]", "database", "manual"] - - ["group:squirrel", "UpdateBuilder", True, "QueryContext", "", "", "ReturnValue[0]", "database", "manual"] - - ["group:squirrel", "UpdateBuilder", True, "QueryRow", "", "", "ReturnValue[0]", "database", "manual"] - - ["group:squirrel", "UpdateBuilder", True, "QueryRowContext", "", "", "ReturnValue[0]", "database", "manual"] - - addsTo: - pack: codeql/go-all - extensible: sinkModel - data: - - ["group:squirrel", "", False, "Delete", "", "", "Argument[0]", "sql-injection", "manual"] - - ["group:squirrel", "", False, "Expr", "", "", "Argument[0]", "sql-injection", "manual"] - - ["group:squirrel", "", False, "Insert", "", "", "Argument[0]", "sql-injection", "manual"] - - ["group:squirrel", "", False, "Select", "", "", "Argument[0]", "sql-injection", "manual"] # TODO: when sources can have access paths, use .ArrayElement - - ["group:squirrel", "", False, "Update", "", "", "Argument[0]", "sql-injection", "manual"] # TODO: when sources can have access paths, use .ArrayElement - - - ["group:squirrel", "DeleteBuilder", True, "From", "", "", "Argument[0]", "sql-injection", "manual"] - - ["group:squirrel", "DeleteBuilder", True, "OrderBy", "", "", "Argument[0]", "sql-injection", "manual"] # TODO: when sources can have access paths, use .ArrayElement - - ["group:squirrel", "DeleteBuilder", True, "Prefix", "", "", "Argument[0]", "sql-injection", "manual"] - - ["group:squirrel", "DeleteBuilder", True, "Suffix", "", "", "Argument[0]", "sql-injection", "manual"] - # DeleteBuilder.Where has to be modeled in QL to avoid FPs when a non-string argument is used - - - ["group:squirrel", "InsertBuilder", True, "Columns", "", "", "Argument[0]", "sql-injection", "manual"] # TODO: when sources can have access paths, use .ArrayElement - - ["group:squirrel", "InsertBuilder", True, "Into", "", "", "Argument[0]", "sql-injection", "manual"] - - ["group:squirrel", "InsertBuilder", True, "Options", "", "", "Argument[0]", "sql-injection", "manual"] # TODO: when sources can have access paths, use .ArrayElement - - ["group:squirrel", "InsertBuilder", True, "Prefix", "", "", "Argument[0]", "sql-injection", "manual"] - - ["group:squirrel", "InsertBuilder", True, "Suffix", "", "", "Argument[0]", "sql-injection", "manual"] - - - ["group:squirrel", "SelectBuilder", True, "CrossJoin", "", "", "Argument[0]", "sql-injection", "manual"] - - ["group:squirrel", "SelectBuilder", True, "Column", "", "", "Argument[0]", "sql-injection", "manual"] - - ["group:squirrel", "SelectBuilder", True, "Columns", "", "", "Argument[0]", "sql-injection", "manual"] # TODO: when sources can have access paths, use .ArrayElement - - ["group:squirrel", "SelectBuilder", True, "From", "", "", "Argument[0]", "sql-injection", "manual"] - - ["group:squirrel", "SelectBuilder", True, "GroupBy", "", "", "Argument[0]", "sql-injection", "manual"] - - ["group:squirrel", "SelectBuilder", True, "InnerJoin", "", "", "Argument[0]", "sql-injection", "manual"] - - ["group:squirrel", "SelectBuilder", True, "LeftJoin", "", "", "Argument[0]", "sql-injection", "manual"] - - ["group:squirrel", "SelectBuilder", True, "Options", "", "", "Argument[0]", "sql-injection", "manual"] # TODO: when sources can have access paths, use .ArrayElement - - ["group:squirrel", "SelectBuilder", True, "OrderBy", "", "", "Argument[0]", "sql-injection", "manual"] # TODO: when sources can have access paths, use .ArrayElement - - ["group:squirrel", "SelectBuilder", True, "Prefix", "", "", "Argument[0]", "sql-injection", "manual"] - - ["group:squirrel", "SelectBuilder", True, "RightJoin", "", "", "Argument[0]", "sql-injection", "manual"] - - ["group:squirrel", "SelectBuilder", True, "Suffix", "", "", "Argument[0]", "sql-injection", "manual"] - # SelectBuilder.Where has to be modeled in QL to avoid FPs when a non-string argument is used - - - ["group:squirrel", "UpdateBuilder", True, "From", "", "", "Argument[0]", "sql-injection", "manual"] - - ["group:squirrel", "UpdateBuilder", True, "OrderBy", "", "", "Argument[0]", "sql-injection", "manual"] # TODO: when sources can have access paths, use .ArrayElement - - ["group:squirrel", "UpdateBuilder", True, "Prefix", "", "", "Argument[0]", "sql-injection", "manual"] - - ["group:squirrel", "UpdateBuilder", True, "Set", "", "", "Argument[0]", "sql-injection", "manual"] - - ["group:squirrel", "UpdateBuilder", True, "Suffix", "", "", "Argument[0]", "sql-injection", "manual"] - - ["group:squirrel", "UpdateBuilder", True, "Table", "", "", "Argument[0]", "sql-injection", "manual"] - # UpdateBuilder.Where has to be modeled in QL to avoid FPs when a non-string argument is used - - # There are summary models for Row.Scan, RowScanner.Scan, {Insert,Delete,Select,Update}Builder.Scan and {Insert,Delete,Select,Update}Builder.ScanContext modeled in QL diff --git a/go/ql/lib/ext/github.com.moovweb.gokogiri.xml.model.json b/go/ql/lib/ext/github.com.moovweb.gokogiri.xml.model.json new file mode 100644 index 000000000000..ab28a8100083 --- /dev/null +++ b/go/ql/lib/ext/github.com.moovweb.gokogiri.xml.model.json @@ -0,0 +1,26 @@ +{ + "extensions": [ + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "packageGrouping" + }, + "data": [ + ["gokogiri/xml", "github.com/moovweb/gokogiri/xml"], + ["gokogiri/xml", "github.com/jbowtie/gokogiri/xml"] + ] + }, + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "sinkModel" + }, + "data": [ + ["group:gokogiri/xml", "Node", true, "Search", "", "", "Argument[0]", "xpath-injection", "manual"], + ["group:gokogiri/xml", "Node", true, "SearchWithVariables", "", "", "Argument[0]", "xpath-injection", "manual"], + ["group:gokogiri/xml", "Node", true, "EvalXPath", "", "", "Argument[0]", "xpath-injection", "manual"], + ["group:gokogiri/xml", "Node", true, "EvalXPathAsBoolean", "", "", "Argument[0]", "xpath-injection", "manual"] + ] + } + ] +} diff --git a/go/ql/lib/ext/github.com.moovweb.gokogiri.xml.model.yml b/go/ql/lib/ext/github.com.moovweb.gokogiri.xml.model.yml deleted file mode 100644 index e3c3cefb79f2..000000000000 --- a/go/ql/lib/ext/github.com.moovweb.gokogiri.xml.model.yml +++ /dev/null @@ -1,15 +0,0 @@ -extensions: - - addsTo: - pack: codeql/go-all - extensible: packageGrouping - data: - - ["gokogiri/xml", "github.com/moovweb/gokogiri/xml"] - - ["gokogiri/xml", "github.com/jbowtie/gokogiri/xml"] - - addsTo: - pack: codeql/go-all - extensible: sinkModel - data: - - ["group:gokogiri/xml", "Node", True, "Search", "", "", "Argument[0]", "xpath-injection", "manual"] - - ["group:gokogiri/xml", "Node", True, "SearchWithVariables", "", "", "Argument[0]", "xpath-injection", "manual"] - - ["group:gokogiri/xml", "Node", True, "EvalXPath", "", "", "Argument[0]", "xpath-injection", "manual"] - - ["group:gokogiri/xml", "Node", True, "EvalXPathAsBoolean", "", "", "Argument[0]", "xpath-injection", "manual"] diff --git a/go/ql/lib/ext/github.com.moovweb.gokogiri.xpath.model.json b/go/ql/lib/ext/github.com.moovweb.gokogiri.xpath.model.json new file mode 100644 index 000000000000..00ee60162715 --- /dev/null +++ b/go/ql/lib/ext/github.com.moovweb.gokogiri.xpath.model.json @@ -0,0 +1,23 @@ +{ + "extensions": [ + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "packageGrouping" + }, + "data": [ + ["gokogiri/xpath", "github.com/moovweb/gokogiri/xpath"], + ["gokogiri/xpath", "github.com/jbowtie/gokogiri/xpath"] + ] + }, + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "sinkModel" + }, + "data": [ + ["group:gokogiri/xpath", "", false, "Compile", "", "", "Argument[0]", "xpath-injection", "manual"] + ] + } + ] +} diff --git a/go/ql/lib/ext/github.com.moovweb.gokogiri.xpath.model.yml b/go/ql/lib/ext/github.com.moovweb.gokogiri.xpath.model.yml deleted file mode 100644 index 144f34e9dfc8..000000000000 --- a/go/ql/lib/ext/github.com.moovweb.gokogiri.xpath.model.yml +++ /dev/null @@ -1,12 +0,0 @@ -extensions: - - addsTo: - pack: codeql/go-all - extensible: packageGrouping - data: - - ["gokogiri/xpath", "github.com/moovweb/gokogiri/xpath"] - - ["gokogiri/xpath", "github.com/jbowtie/gokogiri/xpath"] - - addsTo: - pack: codeql/go-all - extensible: sinkModel - data: - - ["group:gokogiri/xpath", "", False, "Compile", "", "", "Argument[0]", "xpath-injection", "manual"] diff --git a/go/ql/lib/ext/github.com.ory.fosite.token.jwt.model.json b/go/ql/lib/ext/github.com.ory.fosite.token.jwt.model.json new file mode 100644 index 000000000000..e6dc437071b9 --- /dev/null +++ b/go/ql/lib/ext/github.com.ory.fosite.token.jwt.model.json @@ -0,0 +1,14 @@ +{ + "extensions": [ + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "sinkModel" + }, + "data": [ + ["github.com/ory/fosite/token/jwt", "Token", true, "SignedString", "", "", "Argument[0]", "credentials-key", "manual"], + ["github.com/ory/fosite/token/jwt", "SigningMethod", true, "Sign", "", "", "Argument[1]", "credentials-key", "manual"] + ] + } + ] +} diff --git a/go/ql/lib/ext/github.com.ory.fosite.token.jwt.model.yml b/go/ql/lib/ext/github.com.ory.fosite.token.jwt.model.yml deleted file mode 100644 index 191fdea2fb21..000000000000 --- a/go/ql/lib/ext/github.com.ory.fosite.token.jwt.model.yml +++ /dev/null @@ -1,7 +0,0 @@ -extensions: - - addsTo: - pack: codeql/go-all - extensible: sinkModel - data: - - ["github.com/ory/fosite/token/jwt", "Token", True, "SignedString", "", "", "Argument[0]", "credentials-key", "manual"] - - ["github.com/ory/fosite/token/jwt", "SigningMethod", True, "Sign", "", "", "Argument[1]", "credentials-key", "manual"] diff --git a/go/ql/lib/ext/github.com.revel.revel.model.json b/go/ql/lib/ext/github.com.revel.revel.model.json new file mode 100644 index 000000000000..2b393329367b --- /dev/null +++ b/go/ql/lib/ext/github.com.revel.revel.model.json @@ -0,0 +1,81 @@ +{ + "extensions": [ + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "packageGrouping" + }, + "data": [ + ["revel", "github.com/revel/revel"], + ["revel", "github.com/robfig/revel"] + ] + }, + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "sinkModel" + }, + "data": [ + ["group:revel", "Controller", true, "Redirect", "", "", "Argument[0]", "url-redirection", "manual"] // It is currently assumed that a tainted `value` in `Redirect(url, value)`, which calls `Sprintf(url, value)` internally, cannot lead to an open redirect vulnerability. + ] + }, + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "sourceModel" + }, + "data": [ + ["group:revel", "Controller", true, "Params", "", "", "", "remote", "manual"], + ["group:revel", "Request", true, "Header", "", "", "", "remote", "manual"], + ["group:revel", "Request", true, "ContentType", "", "", "", "remote", "manual"], + ["group:revel", "Request", true, "AcceptLanguages", "", "", "", "remote", "manual"], + ["group:revel", "Request", true, "Locale", "", "", "", "remote", "manual"], + ["group:revel", "Request", true, "URL", "", "", "", "remote", "manual"], + ["group:revel", "Request", true, "Form", "", "", "", "remote", "manual"], + ["group:revel", "Request", true, "MultipartForm", "", "", "", "remote", "manual"], + ["group:revel", "RouteMatch", true, "Params", "", "", "", "remote", "manual"], + ["group:revel", "Request", true, "Cookie", "", "", "ReturnValue[0]", "remote", "manual"], + ["group:revel", "Request", true, "FormValue", "", "", "ReturnValue", "remote", "manual"], + ["group:revel", "Request", true, "GetBody", "", "", "ReturnValue", "remote", "manual"], + ["group:revel", "Request", true, "GetForm", "", "", "ReturnValue[0]", "remote", "manual"], + ["group:revel", "Request", true, "GetHttpHeader", "", "", "ReturnValue", "remote", "manual"], + ["group:revel", "Request", true, "GetMultipartForm", "", "", "ReturnValue[0]", "remote", "manual"], + ["group:revel", "Request", true, "GetQuery", "", "", "ReturnValue", "remote", "manual"], + ["group:revel", "Request", true, "GetRequestURI", "", "", "ReturnValue", "remote", "manual"], + ["group:revel", "Request", true, "MultipartReader", "", "", "ReturnValue[0]", "remote", "manual"], + ["group:revel", "Request", true, "PostFormValue", "", "", "ReturnValue", "remote", "manual"], + ["group:revel", "Request", true, "Referer", "", "", "ReturnValue", "remote", "manual"], + ["group:revel", "Request", true, "UserAgent", "", "", "ReturnValue", "remote", "manual"], + ["group:revel", "ServerWebSocket", true, "MessageReceive", "", "", "Argument[0]", "remote", "manual"], + ["group:revel", "ServerWebSocket", true, "MessageReceiveJSON", "", "", "Argument[0]", "remote", "manual"] + ] + }, + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "sinkModel" + }, + "data": [ + ["group:revel", "Controller", true, "RenderFileName", "", "", "Argument[0]", "path-injection", "manual"] // we model this as a path-injection sink rather than extending HTTP::ResponseBody as this will usually mean exposing a user-controlled file rather than the actual contents being user-controlled. + ] + }, + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "summaryModel" + }, + "data": [ + ["group:revel", "Params", true, "Bind", "", "", "Argument[receiver]", "Argument[0]", "taint", "manual"], + ["group:revel", "Params", true, "BindJSON", "", "", "Argument[receiver]", "Argument[0]", "taint", "manual"], + ["group:revel", "RevelHeader", true, "Add", "", "", "Argument[0..1]", "Argument[receiver]", "taint", "manual"], + ["group:revel", "RevelHeader", true, "Get", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"], + ["group:revel", "RevelHeader", true, "GetAll", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"], + ["group:revel", "RevelHeader", true, "Set", "", "", "Argument[0..1]", "Argument[receiver]", "taint", "manual"], + ["group:revel", "RevelHeader", true, "SetCookie", "", "", "Argument[0]", "Argument[receiver]", "taint", "manual"], + ["group:revel", "ServerCookie", true, "GetValue", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"], + ["group:revel", "ServerMultipartForm", true, "GetFiles", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"], + ["group:revel", "ServerMultipartForm", true, "GetValues", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] + ] + } + ] +} diff --git a/go/ql/lib/ext/github.com.revel.revel.model.yml b/go/ql/lib/ext/github.com.revel.revel.model.yml deleted file mode 100644 index acd12f42b1e0..000000000000 --- a/go/ql/lib/ext/github.com.revel.revel.model.yml +++ /dev/null @@ -1,58 +0,0 @@ -extensions: - - addsTo: - pack: codeql/go-all - extensible: packageGrouping - data: - - ["revel", "github.com/revel/revel"] - - ["revel", "github.com/robfig/revel"] - - addsTo: - pack: codeql/go-all - extensible: sinkModel - data: - - ["group:revel", "Controller", True, "Redirect", "", "", "Argument[0]", "url-redirection", "manual"] # It is currently assumed that a tainted `value` in `Redirect(url, value)`, which calls `Sprintf(url, value)` internally, cannot lead to an open redirect vulnerability. - - addsTo: - pack: codeql/go-all - extensible: sourceModel - data: - - ["group:revel", "Controller", True, "Params", "", "", "", "remote", "manual"] - - ["group:revel", "Request", True, "Header", "", "", "", "remote", "manual"] - - ["group:revel", "Request", True, "ContentType", "", "", "", "remote", "manual"] - - ["group:revel", "Request", True, "AcceptLanguages", "", "", "", "remote", "manual"] - - ["group:revel", "Request", True, "Locale", "", "", "", "remote", "manual"] - - ["group:revel", "Request", True, "URL", "", "", "", "remote", "manual"] - - ["group:revel", "Request", True, "Form", "", "", "", "remote", "manual"] - - ["group:revel", "Request", True, "MultipartForm", "", "", "", "remote", "manual"] - - ["group:revel", "RouteMatch", True, "Params", "", "", "", "remote", "manual"] - - ["group:revel", "Request", True, "Cookie", "", "", "ReturnValue[0]", "remote", "manual"] - - ["group:revel", "Request", True, "FormValue", "", "", "ReturnValue", "remote", "manual"] - - ["group:revel", "Request", True, "GetBody", "", "", "ReturnValue", "remote", "manual"] - - ["group:revel", "Request", True, "GetForm", "", "", "ReturnValue[0]", "remote", "manual"] - - ["group:revel", "Request", True, "GetHttpHeader", "", "", "ReturnValue", "remote", "manual"] - - ["group:revel", "Request", True, "GetMultipartForm", "", "", "ReturnValue[0]", "remote", "manual"] - - ["group:revel", "Request", True, "GetQuery", "", "", "ReturnValue", "remote", "manual"] - - ["group:revel", "Request", True, "GetRequestURI", "", "", "ReturnValue", "remote", "manual"] - - ["group:revel", "Request", True, "MultipartReader", "", "", "ReturnValue[0]", "remote", "manual"] - - ["group:revel", "Request", True, "PostFormValue", "", "", "ReturnValue", "remote", "manual"] - - ["group:revel", "Request", True, "Referer", "", "", "ReturnValue", "remote", "manual"] - - ["group:revel", "Request", True, "UserAgent", "", "", "ReturnValue", "remote", "manual"] - - ["group:revel", "ServerWebSocket", True, "MessageReceive", "", "", "Argument[0]", "remote", "manual"] - - ["group:revel", "ServerWebSocket", True, "MessageReceiveJSON", "", "", "Argument[0]", "remote", "manual"] - - addsTo: - pack: codeql/go-all - extensible: sinkModel - data: - - ["group:revel", "Controller", True, "RenderFileName", "", "", "Argument[0]", "path-injection", "manual"] # we model this as a path-injection sink rather than extending HTTP::ResponseBody as this will usually mean exposing a user-controlled file rather than the actual contents being user-controlled. - - addsTo: - pack: codeql/go-all - extensible: summaryModel - data: - - ["group:revel", "Params", True, "Bind", "", "", "Argument[receiver]", "Argument[0]", "taint", "manual"] - - ["group:revel", "Params", True, "BindJSON", "", "", "Argument[receiver]", "Argument[0]", "taint", "manual"] - - ["group:revel", "RevelHeader", True, "Add", "", "", "Argument[0..1]", "Argument[receiver]", "taint", "manual"] - - ["group:revel", "RevelHeader", True, "Get", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] - - ["group:revel", "RevelHeader", True, "GetAll", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] - - ["group:revel", "RevelHeader", True, "Set", "", "", "Argument[0..1]", "Argument[receiver]", "taint", "manual"] - - ["group:revel", "RevelHeader", True, "SetCookie", "", "", "Argument[0]", "Argument[receiver]", "taint", "manual"] - - ["group:revel", "ServerCookie", True, "GetValue", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] - - ["group:revel", "ServerMultipartForm", True, "GetFiles", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] - - ["group:revel", "ServerMultipartForm", True, "GetValues", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] diff --git a/go/ql/lib/ext/github.com.rqlite.gorqlite.model.json b/go/ql/lib/ext/github.com.rqlite.gorqlite.model.json new file mode 100644 index 000000000000..7246363cdb02 --- /dev/null +++ b/go/ql/lib/ext/github.com.rqlite.gorqlite.model.json @@ -0,0 +1,73 @@ +{ + "extensions": [ + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "packageGrouping" + }, + "data": [ + ["gorqlite", "github.com/kanikanema/gorqlite"], + ["gorqlite", "github.com/rqlite/gorqlite"], + ["gorqlite", "github.com/raindog308/gorqlite"] + ] + }, + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "sourceModel" + }, + "data": [ + ["group:gorqlite", "Connection", true, "Query", "", "", "ReturnValue[0]", "database", "manual"], + ["group:gorqlite", "Connection", true, "QueryContext", "", "", "ReturnValue[0]", "database", "manual"], + ["group:gorqlite", "Connection", true, "QueryOne", "", "", "ReturnValue[0]", "database", "manual"], + ["group:gorqlite", "Connection", true, "QueryOneContext", "", "", "ReturnValue[0]", "database", "manual"], + ["group:gorqlite", "Connection", true, "QueryOneParameterized", "", "", "ReturnValue[0]", "database", "manual"], + ["group:gorqlite", "Connection", true, "QueryOneParameterizedContext", "", "", "ReturnValue[0]", "database", "manual"], + ["group:gorqlite", "Connection", true, "QueryParameterized", "", "", "ReturnValue[0]", "database", "manual"], + ["group:gorqlite", "Connection", true, "QueryParameterizedContext", "", "", "ReturnValue[0]", "database", "manual"] + ] + }, + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "sinkModel" + }, + "data": [ + ["group:gorqlite", "Connection", true, "Query", "", "", "Argument[0]", "sql-injection", "manual"], + ["group:gorqlite", "Connection", true, "QueryContext", "", "", "Argument[1]", "sql-injection", "manual"], + ["group:gorqlite", "Connection", true, "QueryOne", "", "", "Argument[0]", "sql-injection", "manual"], + ["group:gorqlite", "Connection", true, "QueryOneContext", "", "", "Argument[1]", "sql-injection", "manual"], + ["group:gorqlite", "Connection", true, "QueryOneParameterized", "", "", "Argument[0]", "sql-injection", "manual"], + ["group:gorqlite", "Connection", true, "QueryOneParameterizedContext", "", "", "Argument[1]", "sql-injection", "manual"], + ["group:gorqlite", "Connection", true, "QueryParameterized", "", "", "Argument[0]", "sql-injection", "manual"], + ["group:gorqlite", "Connection", true, "QueryParameterizedContext", "", "", "Argument[1]", "sql-injection", "manual"], + ["group:gorqlite", "Connection", true, "Queue", "", "", "Argument[0]", "sql-injection", "manual"], + ["group:gorqlite", "Connection", true, "QueueContext", "", "", "Argument[1]", "sql-injection", "manual"], + ["group:gorqlite", "Connection", true, "QueueOne", "", "", "Argument[0]", "sql-injection", "manual"], + ["group:gorqlite", "Connection", true, "QueueOneContext", "", "", "Argument[1]", "sql-injection", "manual"], + ["group:gorqlite", "Connection", true, "QueueOneParameterized", "", "", "Argument[0]", "sql-injection", "manual"], + ["group:gorqlite", "Connection", true, "QueueOneParameterizedContext", "", "", "Argument[1]", "sql-injection", "manual"], + ["group:gorqlite", "Connection", true, "QueueParameterized", "", "", "Argument[0]", "sql-injection", "manual"], + ["group:gorqlite", "Connection", true, "QueueParameterizedContext", "", "", "Argument[1]", "sql-injection", "manual"], + ["group:gorqlite", "Connection", true, "Write", "", "", "Argument[0]", "sql-injection", "manual"], + ["group:gorqlite", "Connection", true, "WriteContext", "", "", "Argument[1]", "sql-injection", "manual"], + ["group:gorqlite", "Connection", true, "WriteOne", "", "", "Argument[0]", "sql-injection", "manual"], + ["group:gorqlite", "Connection", true, "WriteOneContext", "", "", "Argument[1]", "sql-injection", "manual"], + ["group:gorqlite", "Connection", true, "WriteOneParameterized", "", "", "Argument[0]", "sql-injection", "manual"], + ["group:gorqlite", "Connection", true, "WriteOneParameterizedContext", "", "", "Argument[1]", "sql-injection", "manual"], + ["group:gorqlite", "Connection", true, "WriteParameterized", "", "", "Argument[0]", "sql-injection", "manual"], + ["group:gorqlite", "Connection", true, "WriteParameterizedContext", "", "", "Argument[1]", "sql-injection", "manual"] + ] + }, + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "summaryModel" + }, + "data": [ + ["group:gorqlite", "QueryResult", true, "Map", "", "", "Argument[receiver]", "ReturnValue[0]", "taint", "manual"], + ["group:gorqlite", "QueryResult", true, "Slice", "", "", "Argument[receiver]", "ReturnValue[0]", "taint", "manual"] + ] + } + ] +} diff --git a/go/ql/lib/ext/github.com.rqlite.gorqlite.model.yml b/go/ql/lib/ext/github.com.rqlite.gorqlite.model.yml deleted file mode 100644 index e65050f8aa24..000000000000 --- a/go/ql/lib/ext/github.com.rqlite.gorqlite.model.yml +++ /dev/null @@ -1,54 +0,0 @@ -extensions: - - addsTo: - pack: codeql/go-all - extensible: packageGrouping - data: - - ["gorqlite", "github.com/kanikanema/gorqlite"] - - ["gorqlite", "github.com/rqlite/gorqlite"] - - ["gorqlite", "github.com/raindog308/gorqlite"] - - addsTo: - pack: codeql/go-all - extensible: sourceModel - data: - - ["group:gorqlite", "Connection", True, "Query", "", "", "ReturnValue[0]", "database", "manual"] - - ["group:gorqlite", "Connection", True, "QueryContext", "", "", "ReturnValue[0]", "database", "manual"] - - ["group:gorqlite", "Connection", True, "QueryOne", "", "", "ReturnValue[0]", "database", "manual"] - - ["group:gorqlite", "Connection", True, "QueryOneContext", "", "", "ReturnValue[0]", "database", "manual"] - - ["group:gorqlite", "Connection", True, "QueryOneParameterized", "", "", "ReturnValue[0]", "database", "manual"] - - ["group:gorqlite", "Connection", True, "QueryOneParameterizedContext", "", "", "ReturnValue[0]", "database", "manual"] - - ["group:gorqlite", "Connection", True, "QueryParameterized", "", "", "ReturnValue[0]", "database", "manual"] - - ["group:gorqlite", "Connection", True, "QueryParameterizedContext", "", "", "ReturnValue[0]", "database", "manual"] - - addsTo: - pack: codeql/go-all - extensible: sinkModel - data: - - ["group:gorqlite", "Connection", True, "Query", "", "", "Argument[0]", "sql-injection", "manual"] - - ["group:gorqlite", "Connection", True, "QueryContext", "", "", "Argument[1]", "sql-injection", "manual"] - - ["group:gorqlite", "Connection", True, "QueryOne", "", "", "Argument[0]", "sql-injection", "manual"] - - ["group:gorqlite", "Connection", True, "QueryOneContext", "", "", "Argument[1]", "sql-injection", "manual"] - - ["group:gorqlite", "Connection", True, "QueryOneParameterized", "", "", "Argument[0]", "sql-injection", "manual"] - - ["group:gorqlite", "Connection", True, "QueryOneParameterizedContext", "", "", "Argument[1]", "sql-injection", "manual"] - - ["group:gorqlite", "Connection", True, "QueryParameterized", "", "", "Argument[0]", "sql-injection", "manual"] - - ["group:gorqlite", "Connection", True, "QueryParameterizedContext", "", "", "Argument[1]", "sql-injection", "manual"] - - ["group:gorqlite", "Connection", True, "Queue", "", "", "Argument[0]", "sql-injection", "manual"] - - ["group:gorqlite", "Connection", True, "QueueContext", "", "", "Argument[1]", "sql-injection", "manual"] - - ["group:gorqlite", "Connection", True, "QueueOne", "", "", "Argument[0]", "sql-injection", "manual"] - - ["group:gorqlite", "Connection", True, "QueueOneContext", "", "", "Argument[1]", "sql-injection", "manual"] - - ["group:gorqlite", "Connection", True, "QueueOneParameterized", "", "", "Argument[0]", "sql-injection", "manual"] - - ["group:gorqlite", "Connection", True, "QueueOneParameterizedContext", "", "", "Argument[1]", "sql-injection", "manual"] - - ["group:gorqlite", "Connection", True, "QueueParameterized", "", "", "Argument[0]", "sql-injection", "manual"] - - ["group:gorqlite", "Connection", True, "QueueParameterizedContext", "", "", "Argument[1]", "sql-injection", "manual"] - - ["group:gorqlite", "Connection", True, "Write", "", "", "Argument[0]", "sql-injection", "manual"] - - ["group:gorqlite", "Connection", True, "WriteContext", "", "", "Argument[1]", "sql-injection", "manual"] - - ["group:gorqlite", "Connection", True, "WriteOne", "", "", "Argument[0]", "sql-injection", "manual"] - - ["group:gorqlite", "Connection", True, "WriteOneContext", "", "", "Argument[1]", "sql-injection", "manual"] - - ["group:gorqlite", "Connection", True, "WriteOneParameterized", "", "", "Argument[0]", "sql-injection", "manual"] - - ["group:gorqlite", "Connection", True, "WriteOneParameterizedContext", "", "", "Argument[1]", "sql-injection", "manual"] - - ["group:gorqlite", "Connection", True, "WriteParameterized", "", "", "Argument[0]", "sql-injection", "manual"] - - ["group:gorqlite", "Connection", True, "WriteParameterizedContext", "", "", "Argument[1]", "sql-injection", "manual"] - - addsTo: - pack: codeql/go-all - extensible: summaryModel - data: - - ["group:gorqlite", "QueryResult", True, "Map", "", "", "Argument[receiver]", "ReturnValue[0]", "taint", "manual"] - - ["group:gorqlite", "QueryResult", True, "Slice", "", "", "Argument[receiver]", "ReturnValue[0]", "taint", "manual"] diff --git a/go/ql/lib/ext/github.com.santhosh-tekuri.xpathparser.model.json b/go/ql/lib/ext/github.com.santhosh-tekuri.xpathparser.model.json new file mode 100644 index 000000000000..a695d3648dd7 --- /dev/null +++ b/go/ql/lib/ext/github.com.santhosh-tekuri.xpathparser.model.json @@ -0,0 +1,14 @@ +{ + "extensions": [ + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "sinkModel" + }, + "data": [ + ["github.com/santhosh-tekuri/xpathparser", "", false, "Parse", "", "", "Argument[0]", "xpath-injection", "manual"], + ["github.com/santhosh-tekuri/xpathparser", "", false, "MustParse", "", "", "Argument[0]", "xpath-injection", "manual"] + ] + } + ] +} diff --git a/go/ql/lib/ext/github.com.santhosh-tekuri.xpathparser.model.yml b/go/ql/lib/ext/github.com.santhosh-tekuri.xpathparser.model.yml deleted file mode 100644 index b99bedf38cc8..000000000000 --- a/go/ql/lib/ext/github.com.santhosh-tekuri.xpathparser.model.yml +++ /dev/null @@ -1,7 +0,0 @@ -extensions: - - addsTo: - pack: codeql/go-all - extensible: sinkModel - data: - - ["github.com/santhosh-tekuri/xpathparser", "", False, "Parse", "", "", "Argument[0]", "xpath-injection", "manual"] - - ["github.com/santhosh-tekuri/xpathparser", "", False, "MustParse", "", "", "Argument[0]", "xpath-injection", "manual"] diff --git a/go/ql/lib/ext/github.com.sendgrid.sendgrid-go.helpers.mail.model.json b/go/ql/lib/ext/github.com.sendgrid.sendgrid-go.helpers.mail.model.json new file mode 100644 index 000000000000..f2a72f59cc29 --- /dev/null +++ b/go/ql/lib/ext/github.com.sendgrid.sendgrid-go.helpers.mail.model.json @@ -0,0 +1,13 @@ +{ + "extensions": [ + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "summaryModel" + }, + "data": [ + ["github.com/sendgrid/sendgrid-go/helpers/mail", "", false, "NewContent", "", "", "Argument[1]", "ReturnValue", "taint", "manual"] + ] + } + ] +} diff --git a/go/ql/lib/ext/github.com.sendgrid.sendgrid-go.helpers.mail.model.yml b/go/ql/lib/ext/github.com.sendgrid.sendgrid-go.helpers.mail.model.yml deleted file mode 100644 index ce8ac14ccfa5..000000000000 --- a/go/ql/lib/ext/github.com.sendgrid.sendgrid-go.helpers.mail.model.yml +++ /dev/null @@ -1,6 +0,0 @@ -extensions: - - addsTo: - pack: codeql/go-all - extensible: summaryModel - data: - - ["github.com/sendgrid/sendgrid-go/helpers/mail", "", False, "NewContent", "", "", "Argument[1]", "ReturnValue", "taint", "manual"] diff --git a/go/ql/lib/ext/github.com.sirupsen.logrus.model.json b/go/ql/lib/ext/github.com.sirupsen.logrus.model.json new file mode 100644 index 000000000000..3350d22dd48c --- /dev/null +++ b/go/ql/lib/ext/github.com.sirupsen.logrus.model.json @@ -0,0 +1,167 @@ +{ + "extensions": [ + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "packageGrouping" + }, + "data": [ + ["logrus", "github.com/sirupsen/logrus"], + ["logrus", "github.com/Sirupsen/logrus"] + ] + }, + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "sinkModel" + }, + "data": [ + ["group:logrus", "", false, "Debug", "", "", "Argument[0]", "log-injection", "manual"], + ["group:logrus", "", false, "DebugFn", "", "", "Argument[0]", "log-injection", "manual"], + ["group:logrus", "", false, "Debugf", "", "", "Argument[0..1]", "log-injection", "manual"], + ["group:logrus", "", false, "Debugln", "", "", "Argument[0]", "log-injection", "manual"], + ["group:logrus", "", false, "Error", "", "", "Argument[0]", "log-injection", "manual"], + ["group:logrus", "", false, "ErrorFn", "", "", "Argument[0]", "log-injection", "manual"], + ["group:logrus", "", false, "Errorf", "", "", "Argument[0..1]", "log-injection", "manual"], + ["group:logrus", "", false, "Errorln", "", "", "Argument[0]", "log-injection", "manual"], + ["group:logrus", "", false, "Fatal", "", "", "Argument[0]", "log-injection", "manual"], + ["group:logrus", "", false, "FatalFn", "", "", "Argument[0]", "log-injection", "manual"], + ["group:logrus", "", false, "Fatalf", "", "", "Argument[0..1]", "log-injection", "manual"], + ["group:logrus", "", false, "Fatalln", "", "", "Argument[0]", "log-injection", "manual"], + ["group:logrus", "", false, "Info", "", "", "Argument[0]", "log-injection", "manual"], + ["group:logrus", "", false, "InfoFn", "", "", "Argument[0]", "log-injection", "manual"], + ["group:logrus", "", false, "Infof", "", "", "Argument[0..1]", "log-injection", "manual"], + ["group:logrus", "", false, "Infoln", "", "", "Argument[0]", "log-injection", "manual"], + ["group:logrus", "", false, "Panic", "", "", "Argument[0]", "log-injection", "manual"], + ["group:logrus", "", false, "PanicFn", "", "", "Argument[0]", "log-injection", "manual"], + ["group:logrus", "", false, "Panicf", "", "", "Argument[0..1]", "log-injection", "manual"], + ["group:logrus", "", false, "Panicln", "", "", "Argument[0]", "log-injection", "manual"], + ["group:logrus", "", false, "Print", "", "", "Argument[0]", "log-injection", "manual"], + ["group:logrus", "", false, "PrintFn", "", "", "Argument[0]", "log-injection", "manual"], + ["group:logrus", "", false, "Printf", "", "", "Argument[0..1]", "log-injection", "manual"], + ["group:logrus", "", false, "Println", "", "", "Argument[0]", "log-injection", "manual"], + ["group:logrus", "", false, "Trace", "", "", "Argument[0]", "log-injection", "manual"], + ["group:logrus", "", false, "TraceFn", "", "", "Argument[0]", "log-injection", "manual"], + ["group:logrus", "", false, "Tracef", "", "", "Argument[0..1]", "log-injection", "manual"], + ["group:logrus", "", false, "Traceln", "", "", "Argument[0]", "log-injection", "manual"], + ["group:logrus", "", false, "Warn", "", "", "Argument[0]", "log-injection", "manual"], + ["group:logrus", "", false, "WarnFn", "", "", "Argument[0]", "log-injection", "manual"], + ["group:logrus", "", false, "Warnf", "", "", "Argument[0..1]", "log-injection", "manual"], + ["group:logrus", "", false, "Warnln", "", "", "Argument[0]", "log-injection", "manual"], + ["group:logrus", "", false, "Warning", "", "", "Argument[0]", "log-injection", "manual"], + ["group:logrus", "", false, "WarningFn", "", "", "Argument[0]", "log-injection", "manual"], + ["group:logrus", "", false, "Warningf", "", "", "Argument[0..1]", "log-injection", "manual"], + ["group:logrus", "", false, "Warningln", "", "", "Argument[0]", "log-injection", "manual"], + ["group:logrus", "", false, "WithError", "", "", "Argument[0]", "log-injection", "manual"], + ["group:logrus", "", false, "WithField", "", "", "Argument[0..1]", "log-injection", "manual"], + ["group:logrus", "", false, "WithFields", "", "", "Argument[0]", "log-injection", "manual"], + ["group:logrus", "", false, "WithTime", "", "", "Argument[0]", "log-injection", "manual"], + ["group:logrus", "Entry", true, "Debug", "", "", "Argument[0]", "log-injection", "manual"], + ["group:logrus", "Entry", true, "Debugf", "", "", "Argument[0..1]", "log-injection", "manual"], + ["group:logrus", "Entry", true, "Debugln", "", "", "Argument[0]", "log-injection", "manual"], + ["group:logrus", "Entry", true, "Error", "", "", "Argument[0]", "log-injection", "manual"], + ["group:logrus", "Entry", true, "Errorf", "", "", "Argument[0..1]", "log-injection", "manual"], + ["group:logrus", "Entry", true, "Errorln", "", "", "Argument[0]", "log-injection", "manual"], + ["group:logrus", "Entry", true, "Fatal", "", "", "Argument[0]", "log-injection", "manual"], + ["group:logrus", "Entry", true, "Fatalf", "", "", "Argument[0..1]", "log-injection", "manual"], + ["group:logrus", "Entry", true, "Fatalln", "", "", "Argument[0]", "log-injection", "manual"], + ["group:logrus", "Entry", true, "Info", "", "", "Argument[0]", "log-injection", "manual"], + ["group:logrus", "Entry", true, "Infof", "", "", "Argument[0..1]", "log-injection", "manual"], + ["group:logrus", "Entry", true, "Infoln", "", "", "Argument[0]", "log-injection", "manual"], + ["group:logrus", "Entry", true, "Log", "", "", "Argument[1]", "log-injection", "manual"], + ["group:logrus", "Entry", true, "Logf", "", "", "Argument[1..2]", "log-injection", "manual"], + ["group:logrus", "Entry", true, "Logln", "", "", "Argument[1]", "log-injection", "manual"], + ["group:logrus", "Entry", true, "Panic", "", "", "Argument[0]", "log-injection", "manual"], + ["group:logrus", "Entry", true, "Panicf", "", "", "Argument[0..1]", "log-injection", "manual"], + ["group:logrus", "Entry", true, "Panicln", "", "", "Argument[0]", "log-injection", "manual"], + ["group:logrus", "Entry", true, "Print", "", "", "Argument[0]", "log-injection", "manual"], + ["group:logrus", "Entry", true, "Printf", "", "", "Argument[0..1]", "log-injection", "manual"], + ["group:logrus", "Entry", true, "Println", "", "", "Argument[0]", "log-injection", "manual"], + ["group:logrus", "Entry", true, "Trace", "", "", "Argument[0]", "log-injection", "manual"], + ["group:logrus", "Entry", true, "Tracef", "", "", "Argument[0..1]", "log-injection", "manual"], + ["group:logrus", "Entry", true, "Traceln", "", "", "Argument[0]", "log-injection", "manual"], + ["group:logrus", "Entry", true, "Warn", "", "", "Argument[0]", "log-injection", "manual"], + ["group:logrus", "Entry", true, "Warnf", "", "", "Argument[0..1]", "log-injection", "manual"], + ["group:logrus", "Entry", true, "Warnln", "", "", "Argument[0]", "log-injection", "manual"], + ["group:logrus", "Entry", true, "Warning", "", "", "Argument[0]", "log-injection", "manual"], + ["group:logrus", "Entry", true, "Warningf", "", "", "Argument[0..1]", "log-injection", "manual"], + ["group:logrus", "Entry", true, "Warningln", "", "", "Argument[0]", "log-injection", "manual"], + ["group:logrus", "Entry", true, "WithError", "", "", "Argument[0]", "log-injection", "manual"], + ["group:logrus", "Entry", true, "WithField", "", "", "Argument[0..1]", "log-injection", "manual"], + ["group:logrus", "Entry", true, "WithFields", "", "", "Argument[0]", "log-injection", "manual"], + ["group:logrus", "Entry", true, "WithTime", "", "", "Argument[0]", "log-injection", "manual"], + ["group:logrus", "FieldLogger", true, "Debug", "", "", "Argument[0]", "log-injection", "manual"], + ["group:logrus", "FieldLogger", true, "Debugf", "", "", "Argument[0..1]", "log-injection", "manual"], + ["group:logrus", "FieldLogger", true, "Debugln", "", "", "Argument[0]", "log-injection", "manual"], + ["group:logrus", "FieldLogger", true, "Error", "", "", "Argument[0]", "log-injection", "manual"], + ["group:logrus", "FieldLogger", true, "Errorf", "", "", "Argument[0..1]", "log-injection", "manual"], + ["group:logrus", "FieldLogger", true, "Errorln", "", "", "Argument[0]", "log-injection", "manual"], + ["group:logrus", "FieldLogger", true, "Fatal", "", "", "Argument[0]", "log-injection", "manual"], + ["group:logrus", "FieldLogger", true, "Fatalf", "", "", "Argument[0..1]", "log-injection", "manual"], + ["group:logrus", "FieldLogger", true, "Fatalln", "", "", "Argument[0]", "log-injection", "manual"], + ["group:logrus", "FieldLogger", true, "Info", "", "", "Argument[0]", "log-injection", "manual"], + ["group:logrus", "FieldLogger", true, "Infof", "", "", "Argument[0..1]", "log-injection", "manual"], + ["group:logrus", "FieldLogger", true, "Infoln", "", "", "Argument[0]", "log-injection", "manual"], + ["group:logrus", "FieldLogger", true, "Panic", "", "", "Argument[0]", "log-injection", "manual"], + ["group:logrus", "FieldLogger", true, "Panicf", "", "", "Argument[0..1]", "log-injection", "manual"], + ["group:logrus", "FieldLogger", true, "Panicln", "", "", "Argument[0]", "log-injection", "manual"], + ["group:logrus", "FieldLogger", true, "Print", "", "", "Argument[0]", "log-injection", "manual"], + ["group:logrus", "FieldLogger", true, "Printf", "", "", "Argument[0..1]", "log-injection", "manual"], + ["group:logrus", "FieldLogger", true, "Println", "", "", "Argument[0]", "log-injection", "manual"], + ["group:logrus", "FieldLogger", true, "Warn", "", "", "Argument[0]", "log-injection", "manual"], + ["group:logrus", "FieldLogger", true, "Warnf", "", "", "Argument[0..1]", "log-injection", "manual"], + ["group:logrus", "FieldLogger", true, "Warnln", "", "", "Argument[0]", "log-injection", "manual"], + ["group:logrus", "FieldLogger", true, "Warning", "", "", "Argument[0]", "log-injection", "manual"], + ["group:logrus", "FieldLogger", true, "Warningf", "", "", "Argument[0..1]", "log-injection", "manual"], + ["group:logrus", "FieldLogger", true, "Warningln", "", "", "Argument[0]", "log-injection", "manual"], + ["group:logrus", "FieldLogger", true, "WithError", "", "", "Argument[0]", "log-injection", "manual"], + ["group:logrus", "FieldLogger", true, "WithField", "", "", "Argument[0..1]", "log-injection", "manual"], + ["group:logrus", "FieldLogger", true, "WithFields", "", "", "Argument[0]", "log-injection", "manual"], + ["group:logrus", "Logger", true, "Debug", "", "", "Argument[0]", "log-injection", "manual"], + ["group:logrus", "Logger", true, "DebugFn", "", "", "Argument[0]", "log-injection", "manual"], + ["group:logrus", "Logger", true, "Debugf", "", "", "Argument[0..1]", "log-injection", "manual"], + ["group:logrus", "Logger", true, "Debugln", "", "", "Argument[0]", "log-injection", "manual"], + ["group:logrus", "Logger", true, "Error", "", "", "Argument[0]", "log-injection", "manual"], + ["group:logrus", "Logger", true, "ErrorFn", "", "", "Argument[0]", "log-injection", "manual"], + ["group:logrus", "Logger", true, "Errorf", "", "", "Argument[0..1]", "log-injection", "manual"], + ["group:logrus", "Logger", true, "Errorln", "", "", "Argument[0]", "log-injection", "manual"], + ["group:logrus", "Logger", true, "Fatal", "", "", "Argument[0]", "log-injection", "manual"], + ["group:logrus", "Logger", true, "FatalFn", "", "", "Argument[0]", "log-injection", "manual"], + ["group:logrus", "Logger", true, "Fatalf", "", "", "Argument[0..1]", "log-injection", "manual"], + ["group:logrus", "Logger", true, "Fatalln", "", "", "Argument[0]", "log-injection", "manual"], + ["group:logrus", "Logger", true, "Info", "", "", "Argument[0]", "log-injection", "manual"], + ["group:logrus", "Logger", true, "InfoFn", "", "", "Argument[0]", "log-injection", "manual"], + ["group:logrus", "Logger", true, "Infof", "", "", "Argument[0..1]", "log-injection", "manual"], + ["group:logrus", "Logger", true, "Infoln", "", "", "Argument[0]", "log-injection", "manual"], + ["group:logrus", "Logger", true, "Log", "", "", "Argument[1]", "log-injection", "manual"], + ["group:logrus", "Logger", true, "LogFn", "", "", "Argument[1]", "log-injection", "manual"], + ["group:logrus", "Logger", true, "Logf", "", "", "Argument[1..2]", "log-injection", "manual"], + ["group:logrus", "Logger", true, "Logln", "", "", "Argument[1]", "log-injection", "manual"], + ["group:logrus", "Logger", true, "Panic", "", "", "Argument[0]", "log-injection", "manual"], + ["group:logrus", "Logger", true, "PanicFn", "", "", "Argument[0]", "log-injection", "manual"], + ["group:logrus", "Logger", true, "Panicf", "", "", "Argument[0..1]", "log-injection", "manual"], + ["group:logrus", "Logger", true, "Panicln", "", "", "Argument[0]", "log-injection", "manual"], + ["group:logrus", "Logger", true, "Print", "", "", "Argument[0]", "log-injection", "manual"], + ["group:logrus", "Logger", true, "PrintFn", "", "", "Argument[0]", "log-injection", "manual"], + ["group:logrus", "Logger", true, "Printf", "", "", "Argument[0..1]", "log-injection", "manual"], + ["group:logrus", "Logger", true, "Println", "", "", "Argument[0]", "log-injection", "manual"], + ["group:logrus", "Logger", true, "Trace", "", "", "Argument[0]", "log-injection", "manual"], + ["group:logrus", "Logger", true, "TraceFn", "", "", "Argument[0]", "log-injection", "manual"], + ["group:logrus", "Logger", true, "Tracef", "", "", "Argument[0..1]", "log-injection", "manual"], + ["group:logrus", "Logger", true, "Traceln", "", "", "Argument[0]", "log-injection", "manual"], + ["group:logrus", "Logger", true, "Warn", "", "", "Argument[0]", "log-injection", "manual"], + ["group:logrus", "Logger", true, "WarnFn", "", "", "Argument[0]", "log-injection", "manual"], + ["group:logrus", "Logger", true, "Warnf", "", "", "Argument[0..1]", "log-injection", "manual"], + ["group:logrus", "Logger", true, "Warnln", "", "", "Argument[0]", "log-injection", "manual"], + ["group:logrus", "Logger", true, "Warning", "", "", "Argument[0]", "log-injection", "manual"], + ["group:logrus", "Logger", true, "WarningFn", "", "", "Argument[0]", "log-injection", "manual"], + ["group:logrus", "Logger", true, "Warningf", "", "", "Argument[0..1]", "log-injection", "manual"], + ["group:logrus", "Logger", true, "Warningln", "", "", "Argument[0]", "log-injection", "manual"], + ["group:logrus", "Logger", true, "WithError", "", "", "Argument[0]", "log-injection", "manual"], + ["group:logrus", "Logger", true, "WithField", "", "", "Argument[0..1]", "log-injection", "manual"], + ["group:logrus", "Logger", true, "WithFields", "", "", "Argument[0]", "log-injection", "manual"], + ["group:logrus", "Logger", true, "WithTime", "", "", "Argument[0]", "log-injection", "manual"] + ] + } + ] +} diff --git a/go/ql/lib/ext/github.com.sirupsen.logrus.model.yml b/go/ql/lib/ext/github.com.sirupsen.logrus.model.yml deleted file mode 100644 index 06f9a54622b4..000000000000 --- a/go/ql/lib/ext/github.com.sirupsen.logrus.model.yml +++ /dev/null @@ -1,159 +0,0 @@ -extensions: - - addsTo: - pack: codeql/go-all - extensible: packageGrouping - data: - - ["logrus", "github.com/sirupsen/logrus"] - - ["logrus", "github.com/Sirupsen/logrus"] - - addsTo: - pack: codeql/go-all - extensible: sinkModel - data: - - ["group:logrus", "", False, "Debug", "", "", "Argument[0]", "log-injection", "manual"] - - ["group:logrus", "", False, "DebugFn", "", "", "Argument[0]", "log-injection", "manual"] - - ["group:logrus", "", False, "Debugf", "", "", "Argument[0..1]", "log-injection", "manual"] - - ["group:logrus", "", False, "Debugln", "", "", "Argument[0]", "log-injection", "manual"] - - ["group:logrus", "", False, "Error", "", "", "Argument[0]", "log-injection", "manual"] - - ["group:logrus", "", False, "ErrorFn", "", "", "Argument[0]", "log-injection", "manual"] - - ["group:logrus", "", False, "Errorf", "", "", "Argument[0..1]", "log-injection", "manual"] - - ["group:logrus", "", False, "Errorln", "", "", "Argument[0]", "log-injection", "manual"] - - ["group:logrus", "", False, "Fatal", "", "", "Argument[0]", "log-injection", "manual"] - - ["group:logrus", "", False, "FatalFn", "", "", "Argument[0]", "log-injection", "manual"] - - ["group:logrus", "", False, "Fatalf", "", "", "Argument[0..1]", "log-injection", "manual"] - - ["group:logrus", "", False, "Fatalln", "", "", "Argument[0]", "log-injection", "manual"] - - ["group:logrus", "", False, "Info", "", "", "Argument[0]", "log-injection", "manual"] - - ["group:logrus", "", False, "InfoFn", "", "", "Argument[0]", "log-injection", "manual"] - - ["group:logrus", "", False, "Infof", "", "", "Argument[0..1]", "log-injection", "manual"] - - ["group:logrus", "", False, "Infoln", "", "", "Argument[0]", "log-injection", "manual"] - - ["group:logrus", "", False, "Panic", "", "", "Argument[0]", "log-injection", "manual"] - - ["group:logrus", "", False, "PanicFn", "", "", "Argument[0]", "log-injection", "manual"] - - ["group:logrus", "", False, "Panicf", "", "", "Argument[0..1]", "log-injection", "manual"] - - ["group:logrus", "", False, "Panicln", "", "", "Argument[0]", "log-injection", "manual"] - - ["group:logrus", "", False, "Print", "", "", "Argument[0]", "log-injection", "manual"] - - ["group:logrus", "", False, "PrintFn", "", "", "Argument[0]", "log-injection", "manual"] - - ["group:logrus", "", False, "Printf", "", "", "Argument[0..1]", "log-injection", "manual"] - - ["group:logrus", "", False, "Println", "", "", "Argument[0]", "log-injection", "manual"] - - ["group:logrus", "", False, "Trace", "", "", "Argument[0]", "log-injection", "manual"] - - ["group:logrus", "", False, "TraceFn", "", "", "Argument[0]", "log-injection", "manual"] - - ["group:logrus", "", False, "Tracef", "", "", "Argument[0..1]", "log-injection", "manual"] - - ["group:logrus", "", False, "Traceln", "", "", "Argument[0]", "log-injection", "manual"] - - ["group:logrus", "", False, "Warn", "", "", "Argument[0]", "log-injection", "manual"] - - ["group:logrus", "", False, "WarnFn", "", "", "Argument[0]", "log-injection", "manual"] - - ["group:logrus", "", False, "Warnf", "", "", "Argument[0..1]", "log-injection", "manual"] - - ["group:logrus", "", False, "Warnln", "", "", "Argument[0]", "log-injection", "manual"] - - ["group:logrus", "", False, "Warning", "", "", "Argument[0]", "log-injection", "manual"] - - ["group:logrus", "", False, "WarningFn", "", "", "Argument[0]", "log-injection", "manual"] - - ["group:logrus", "", False, "Warningf", "", "", "Argument[0..1]", "log-injection", "manual"] - - ["group:logrus", "", False, "Warningln", "", "", "Argument[0]", "log-injection", "manual"] - - ["group:logrus", "", False, "WithError", "", "", "Argument[0]", "log-injection", "manual"] - - ["group:logrus", "", False, "WithField", "", "", "Argument[0..1]", "log-injection", "manual"] - - ["group:logrus", "", False, "WithFields", "", "", "Argument[0]", "log-injection", "manual"] - - ["group:logrus", "", False, "WithTime", "", "", "Argument[0]", "log-injection", "manual"] - - - ["group:logrus", "Entry", True, "Debug", "", "", "Argument[0]", "log-injection", "manual"] - - ["group:logrus", "Entry", True, "Debugf", "", "", "Argument[0..1]", "log-injection", "manual"] - - ["group:logrus", "Entry", True, "Debugln", "", "", "Argument[0]", "log-injection", "manual"] - - ["group:logrus", "Entry", True, "Error", "", "", "Argument[0]", "log-injection", "manual"] - - ["group:logrus", "Entry", True, "Errorf", "", "", "Argument[0..1]", "log-injection", "manual"] - - ["group:logrus", "Entry", True, "Errorln", "", "", "Argument[0]", "log-injection", "manual"] - - ["group:logrus", "Entry", True, "Fatal", "", "", "Argument[0]", "log-injection", "manual"] - - ["group:logrus", "Entry", True, "Fatalf", "", "", "Argument[0..1]", "log-injection", "manual"] - - ["group:logrus", "Entry", True, "Fatalln", "", "", "Argument[0]", "log-injection", "manual"] - - ["group:logrus", "Entry", True, "Info", "", "", "Argument[0]", "log-injection", "manual"] - - ["group:logrus", "Entry", True, "Infof", "", "", "Argument[0..1]", "log-injection", "manual"] - - ["group:logrus", "Entry", True, "Infoln", "", "", "Argument[0]", "log-injection", "manual"] - - ["group:logrus", "Entry", True, "Log", "", "", "Argument[1]", "log-injection", "manual"] - - ["group:logrus", "Entry", True, "Logf", "", "", "Argument[1..2]", "log-injection", "manual"] - - ["group:logrus", "Entry", True, "Logln", "", "", "Argument[1]", "log-injection", "manual"] - - ["group:logrus", "Entry", True, "Panic", "", "", "Argument[0]", "log-injection", "manual"] - - ["group:logrus", "Entry", True, "Panicf", "", "", "Argument[0..1]", "log-injection", "manual"] - - ["group:logrus", "Entry", True, "Panicln", "", "", "Argument[0]", "log-injection", "manual"] - - ["group:logrus", "Entry", True, "Print", "", "", "Argument[0]", "log-injection", "manual"] - - ["group:logrus", "Entry", True, "Printf", "", "", "Argument[0..1]", "log-injection", "manual"] - - ["group:logrus", "Entry", True, "Println", "", "", "Argument[0]", "log-injection", "manual"] - - ["group:logrus", "Entry", True, "Trace", "", "", "Argument[0]", "log-injection", "manual"] - - ["group:logrus", "Entry", True, "Tracef", "", "", "Argument[0..1]", "log-injection", "manual"] - - ["group:logrus", "Entry", True, "Traceln", "", "", "Argument[0]", "log-injection", "manual"] - - ["group:logrus", "Entry", True, "Warn", "", "", "Argument[0]", "log-injection", "manual"] - - ["group:logrus", "Entry", True, "Warnf", "", "", "Argument[0..1]", "log-injection", "manual"] - - ["group:logrus", "Entry", True, "Warnln", "", "", "Argument[0]", "log-injection", "manual"] - - ["group:logrus", "Entry", True, "Warning", "", "", "Argument[0]", "log-injection", "manual"] - - ["group:logrus", "Entry", True, "Warningf", "", "", "Argument[0..1]", "log-injection", "manual"] - - ["group:logrus", "Entry", True, "Warningln", "", "", "Argument[0]", "log-injection", "manual"] - - ["group:logrus", "Entry", True, "WithError", "", "", "Argument[0]", "log-injection", "manual"] - - ["group:logrus", "Entry", True, "WithField", "", "", "Argument[0..1]", "log-injection", "manual"] - - ["group:logrus", "Entry", True, "WithFields", "", "", "Argument[0]", "log-injection", "manual"] - - ["group:logrus", "Entry", True, "WithTime", "", "", "Argument[0]", "log-injection", "manual"] - - - ["group:logrus", "FieldLogger", True, "Debug", "", "", "Argument[0]", "log-injection", "manual"] - - ["group:logrus", "FieldLogger", True, "Debugf", "", "", "Argument[0..1]", "log-injection", "manual"] - - ["group:logrus", "FieldLogger", True, "Debugln", "", "", "Argument[0]", "log-injection", "manual"] - - ["group:logrus", "FieldLogger", True, "Error", "", "", "Argument[0]", "log-injection", "manual"] - - ["group:logrus", "FieldLogger", True, "Errorf", "", "", "Argument[0..1]", "log-injection", "manual"] - - ["group:logrus", "FieldLogger", True, "Errorln", "", "", "Argument[0]", "log-injection", "manual"] - - ["group:logrus", "FieldLogger", True, "Fatal", "", "", "Argument[0]", "log-injection", "manual"] - - ["group:logrus", "FieldLogger", True, "Fatalf", "", "", "Argument[0..1]", "log-injection", "manual"] - - ["group:logrus", "FieldLogger", True, "Fatalln", "", "", "Argument[0]", "log-injection", "manual"] - - ["group:logrus", "FieldLogger", True, "Info", "", "", "Argument[0]", "log-injection", "manual"] - - ["group:logrus", "FieldLogger", True, "Infof", "", "", "Argument[0..1]", "log-injection", "manual"] - - ["group:logrus", "FieldLogger", True, "Infoln", "", "", "Argument[0]", "log-injection", "manual"] - - ["group:logrus", "FieldLogger", True, "Panic", "", "", "Argument[0]", "log-injection", "manual"] - - ["group:logrus", "FieldLogger", True, "Panicf", "", "", "Argument[0..1]", "log-injection", "manual"] - - ["group:logrus", "FieldLogger", True, "Panicln", "", "", "Argument[0]", "log-injection", "manual"] - - ["group:logrus", "FieldLogger", True, "Print", "", "", "Argument[0]", "log-injection", "manual"] - - ["group:logrus", "FieldLogger", True, "Printf", "", "", "Argument[0..1]", "log-injection", "manual"] - - ["group:logrus", "FieldLogger", True, "Println", "", "", "Argument[0]", "log-injection", "manual"] - - ["group:logrus", "FieldLogger", True, "Warn", "", "", "Argument[0]", "log-injection", "manual"] - - ["group:logrus", "FieldLogger", True, "Warnf", "", "", "Argument[0..1]", "log-injection", "manual"] - - ["group:logrus", "FieldLogger", True, "Warnln", "", "", "Argument[0]", "log-injection", "manual"] - - ["group:logrus", "FieldLogger", True, "Warning", "", "", "Argument[0]", "log-injection", "manual"] - - ["group:logrus", "FieldLogger", True, "Warningf", "", "", "Argument[0..1]", "log-injection", "manual"] - - ["group:logrus", "FieldLogger", True, "Warningln", "", "", "Argument[0]", "log-injection", "manual"] - - ["group:logrus", "FieldLogger", True, "WithError", "", "", "Argument[0]", "log-injection", "manual"] - - ["group:logrus", "FieldLogger", True, "WithField", "", "", "Argument[0..1]", "log-injection", "manual"] - - ["group:logrus", "FieldLogger", True, "WithFields", "", "", "Argument[0]", "log-injection", "manual"] - - - ["group:logrus", "Logger", True, "Debug", "", "", "Argument[0]", "log-injection", "manual"] - - ["group:logrus", "Logger", True, "DebugFn", "", "", "Argument[0]", "log-injection", "manual"] - - ["group:logrus", "Logger", True, "Debugf", "", "", "Argument[0..1]", "log-injection", "manual"] - - ["group:logrus", "Logger", True, "Debugln", "", "", "Argument[0]", "log-injection", "manual"] - - ["group:logrus", "Logger", True, "Error", "", "", "Argument[0]", "log-injection", "manual"] - - ["group:logrus", "Logger", True, "ErrorFn", "", "", "Argument[0]", "log-injection", "manual"] - - ["group:logrus", "Logger", True, "Errorf", "", "", "Argument[0..1]", "log-injection", "manual"] - - ["group:logrus", "Logger", True, "Errorln", "", "", "Argument[0]", "log-injection", "manual"] - - ["group:logrus", "Logger", True, "Fatal", "", "", "Argument[0]", "log-injection", "manual"] - - ["group:logrus", "Logger", True, "FatalFn", "", "", "Argument[0]", "log-injection", "manual"] - - ["group:logrus", "Logger", True, "Fatalf", "", "", "Argument[0..1]", "log-injection", "manual"] - - ["group:logrus", "Logger", True, "Fatalln", "", "", "Argument[0]", "log-injection", "manual"] - - ["group:logrus", "Logger", True, "Info", "", "", "Argument[0]", "log-injection", "manual"] - - ["group:logrus", "Logger", True, "InfoFn", "", "", "Argument[0]", "log-injection", "manual"] - - ["group:logrus", "Logger", True, "Infof", "", "", "Argument[0..1]", "log-injection", "manual"] - - ["group:logrus", "Logger", True, "Infoln", "", "", "Argument[0]", "log-injection", "manual"] - - ["group:logrus", "Logger", True, "Log", "", "", "Argument[1]", "log-injection", "manual"] - - ["group:logrus", "Logger", True, "LogFn", "", "", "Argument[1]", "log-injection", "manual"] - - ["group:logrus", "Logger", True, "Logf", "", "", "Argument[1..2]", "log-injection", "manual"] - - ["group:logrus", "Logger", True, "Logln", "", "", "Argument[1]", "log-injection", "manual"] - - ["group:logrus", "Logger", True, "Panic", "", "", "Argument[0]", "log-injection", "manual"] - - ["group:logrus", "Logger", True, "PanicFn", "", "", "Argument[0]", "log-injection", "manual"] - - ["group:logrus", "Logger", True, "Panicf", "", "", "Argument[0..1]", "log-injection", "manual"] - - ["group:logrus", "Logger", True, "Panicln", "", "", "Argument[0]", "log-injection", "manual"] - - ["group:logrus", "Logger", True, "Print", "", "", "Argument[0]", "log-injection", "manual"] - - ["group:logrus", "Logger", True, "PrintFn", "", "", "Argument[0]", "log-injection", "manual"] - - ["group:logrus", "Logger", True, "Printf", "", "", "Argument[0..1]", "log-injection", "manual"] - - ["group:logrus", "Logger", True, "Println", "", "", "Argument[0]", "log-injection", "manual"] - - ["group:logrus", "Logger", True, "Trace", "", "", "Argument[0]", "log-injection", "manual"] - - ["group:logrus", "Logger", True, "TraceFn", "", "", "Argument[0]", "log-injection", "manual"] - - ["group:logrus", "Logger", True, "Tracef", "", "", "Argument[0..1]", "log-injection", "manual"] - - ["group:logrus", "Logger", True, "Traceln", "", "", "Argument[0]", "log-injection", "manual"] - - ["group:logrus", "Logger", True, "Warn", "", "", "Argument[0]", "log-injection", "manual"] - - ["group:logrus", "Logger", True, "WarnFn", "", "", "Argument[0]", "log-injection", "manual"] - - ["group:logrus", "Logger", True, "Warnf", "", "", "Argument[0..1]", "log-injection", "manual"] - - ["group:logrus", "Logger", True, "Warnln", "", "", "Argument[0]", "log-injection", "manual"] - - ["group:logrus", "Logger", True, "Warning", "", "", "Argument[0]", "log-injection", "manual"] - - ["group:logrus", "Logger", True, "WarningFn", "", "", "Argument[0]", "log-injection", "manual"] - - ["group:logrus", "Logger", True, "Warningf", "", "", "Argument[0..1]", "log-injection", "manual"] - - ["group:logrus", "Logger", True, "Warningln", "", "", "Argument[0]", "log-injection", "manual"] - - ["group:logrus", "Logger", True, "WithError", "", "", "Argument[0]", "log-injection", "manual"] - - ["group:logrus", "Logger", True, "WithField", "", "", "Argument[0..1]", "log-injection", "manual"] - - ["group:logrus", "Logger", True, "WithFields", "", "", "Argument[0]", "log-injection", "manual"] - - ["group:logrus", "Logger", True, "WithTime", "", "", "Argument[0]", "log-injection", "manual"] diff --git a/go/ql/lib/ext/github.com.spf13.afero.model.json b/go/ql/lib/ext/github.com.spf13.afero.model.json new file mode 100644 index 000000000000..00a11d086237 --- /dev/null +++ b/go/ql/lib/ext/github.com.spf13.afero.model.json @@ -0,0 +1,46 @@ +{ + "extensions": [ + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "sinkModel" + }, + "data": [ + ["github.com/spf13/afero", "HttpFs", true, "Create", "", "", "Argument[0]", "path-injection", "manual"], + ["github.com/spf13/afero", "HttpFs", true, "Open", "", "", "Argument[0]", "path-injection", "manual"], + ["github.com/spf13/afero", "HttpFs", true, "OpenFile", "", "", "Argument[0]", "path-injection", "manual"], + ["github.com/spf13/afero", "HttpFs", true, "Remove", "", "", "Argument[0]", "path-injection", "manual"], + ["github.com/spf13/afero", "HttpFs", true, "RemoveAll", "", "", "Argument[0]", "path-injection", "manual"], + ["github.com/spf13/afero", "MemMapFs", true, "Create", "", "", "Argument[0]", "path-injection", "manual"], + ["github.com/spf13/afero", "MemMapFs", true, "Open", "", "", "Argument[0]", "path-injection", "manual"], + ["github.com/spf13/afero", "MemMapFs", true, "OpenFile", "", "", "Argument[0]", "path-injection", "manual"], + ["github.com/spf13/afero", "MemMapFs", true, "Remove", "", "", "Argument[0]", "path-injection", "manual"], + ["github.com/spf13/afero", "MemMapFs", true, "RemoveAll", "", "", "Argument[0]", "path-injection", "manual"], + ["github.com/spf13/afero", "MemMapFs", true, "Mkdir", "", "", "Argument[0]", "path-injection", "manual"], + ["github.com/spf13/afero", "MemMapFs", true, "MkdirAll", "", "", "Argument[0]", "path-injection", "manual"], + ["github.com/spf13/afero", "OsFs", true, "Create", "", "", "Argument[0]", "path-injection", "manual"], + ["github.com/spf13/afero", "OsFs", true, "Open", "", "", "Argument[0]", "path-injection", "manual"], + ["github.com/spf13/afero", "OsFs", true, "OpenFile", "", "", "Argument[0]", "path-injection", "manual"], + ["github.com/spf13/afero", "OsFs", true, "ReadlinkIfPossible", "", "", "Argument[0]", "path-injection", "manual"], + ["github.com/spf13/afero", "OsFs", true, "Remove", "", "", "Argument[0]", "path-injection", "manual"], + ["github.com/spf13/afero", "OsFs", true, "RemoveAll", "", "", "Argument[0]", "path-injection", "manual"], + ["github.com/spf13/afero", "OsFs", true, "Mkdir", "", "", "Argument[0]", "path-injection", "manual"], + ["github.com/spf13/afero", "OsFs", true, "MkdirAll", "", "", "Argument[0]", "path-injection", "manual"], + ["github.com/spf13/afero", "ReadOnlyFs", true, "Create", "", "", "Argument[0]", "path-injection", "manual"], + ["github.com/spf13/afero", "ReadOnlyFs", true, "Open", "", "", "Argument[0]", "path-injection", "manual"], + ["github.com/spf13/afero", "ReadOnlyFs", true, "OpenFile", "", "", "Argument[0]", "path-injection", "manual"], + ["github.com/spf13/afero", "ReadOnlyFs", true, "ReadDir", "", "", "Argument[0]", "path-injection", "manual"], + ["github.com/spf13/afero", "ReadOnlyFs", true, "ReadlinkIfPossible", "", "", "Argument[0]", "path-injection", "manual"], + ["github.com/spf13/afero", "ReadOnlyFs", true, "Mkdir", "", "", "Argument[0]", "path-injection", "manual"], + ["github.com/spf13/afero", "ReadOnlyFs", true, "MkdirAll", "", "", "Argument[0]", "path-injection", "manual"], + ["github.com/spf13/afero", "RegexpFs", true, "Create", "", "", "Argument[0]", "path-injection", "manual"], + ["github.com/spf13/afero", "RegexpFs", true, "Open", "", "", "Argument[0]", "path-injection", "manual"], + ["github.com/spf13/afero", "RegexpFs", true, "OpenFile", "", "", "Argument[0]", "path-injection", "manual"], + ["github.com/spf13/afero", "RegexpFs", true, "Remove", "", "", "Argument[0]", "path-injection", "manual"], + ["github.com/spf13/afero", "RegexpFs", true, "RemoveAll", "", "", "Argument[0]", "path-injection", "manual"], + ["github.com/spf13/afero", "RegexpFs", true, "Mkdir", "", "", "Argument[0]", "path-injection", "manual"], + ["github.com/spf13/afero", "RegexpFs", true, "MkdirAll", "", "", "Argument[0]", "path-injection", "manual"] + ] + } + ] +} diff --git a/go/ql/lib/ext/github.com.spf13.afero.model.yml b/go/ql/lib/ext/github.com.spf13.afero.model.yml deleted file mode 100644 index 2ddab6ef43bb..000000000000 --- a/go/ql/lib/ext/github.com.spf13.afero.model.yml +++ /dev/null @@ -1,39 +0,0 @@ -extensions: - - addsTo: - pack: codeql/go-all - extensible: sinkModel - data: - - ["github.com/spf13/afero", "HttpFs", True, "Create", "", "", "Argument[0]", "path-injection", "manual"] - - ["github.com/spf13/afero", "HttpFs", True, "Open", "", "", "Argument[0]", "path-injection", "manual"] - - ["github.com/spf13/afero", "HttpFs", True, "OpenFile", "", "", "Argument[0]", "path-injection", "manual"] - - ["github.com/spf13/afero", "HttpFs", True, "Remove", "", "", "Argument[0]", "path-injection", "manual"] - - ["github.com/spf13/afero", "HttpFs", True, "RemoveAll", "", "", "Argument[0]", "path-injection", "manual"] - - ["github.com/spf13/afero", "MemMapFs", True, "Create", "", "", "Argument[0]", "path-injection", "manual"] - - ["github.com/spf13/afero", "MemMapFs", True, "Open", "", "", "Argument[0]", "path-injection", "manual"] - - ["github.com/spf13/afero", "MemMapFs", True, "OpenFile", "", "", "Argument[0]", "path-injection", "manual"] - - ["github.com/spf13/afero", "MemMapFs", True, "Remove", "", "", "Argument[0]", "path-injection", "manual"] - - ["github.com/spf13/afero", "MemMapFs", True, "RemoveAll", "", "", "Argument[0]", "path-injection", "manual"] - - ["github.com/spf13/afero", "MemMapFs", True, "Mkdir", "", "", "Argument[0]", "path-injection", "manual"] - - ["github.com/spf13/afero", "MemMapFs", True, "MkdirAll", "", "", "Argument[0]", "path-injection", "manual"] - - ["github.com/spf13/afero", "OsFs", True, "Create", "", "", "Argument[0]", "path-injection", "manual"] - - ["github.com/spf13/afero", "OsFs", True, "Open", "", "", "Argument[0]", "path-injection", "manual"] - - ["github.com/spf13/afero", "OsFs", True, "OpenFile", "", "", "Argument[0]", "path-injection", "manual"] - - ["github.com/spf13/afero", "OsFs", True, "ReadlinkIfPossible", "", "", "Argument[0]", "path-injection", "manual"] - - ["github.com/spf13/afero", "OsFs", True, "Remove", "", "", "Argument[0]", "path-injection", "manual"] - - ["github.com/spf13/afero", "OsFs", True, "RemoveAll", "", "", "Argument[0]", "path-injection", "manual"] - - ["github.com/spf13/afero", "OsFs", True, "Mkdir", "", "", "Argument[0]", "path-injection", "manual"] - - ["github.com/spf13/afero", "OsFs", True, "MkdirAll", "", "", "Argument[0]", "path-injection", "manual"] - - ["github.com/spf13/afero", "ReadOnlyFs", True, "Create", "", "", "Argument[0]", "path-injection", "manual"] - - ["github.com/spf13/afero", "ReadOnlyFs", True, "Open", "", "", "Argument[0]", "path-injection", "manual"] - - ["github.com/spf13/afero", "ReadOnlyFs", True, "OpenFile", "", "", "Argument[0]", "path-injection", "manual"] - - ["github.com/spf13/afero", "ReadOnlyFs", True, "ReadDir", "", "", "Argument[0]", "path-injection", "manual"] - - ["github.com/spf13/afero", "ReadOnlyFs", True, "ReadlinkIfPossible", "", "", "Argument[0]", "path-injection", "manual"] - - ["github.com/spf13/afero", "ReadOnlyFs", True, "Mkdir", "", "", "Argument[0]", "path-injection", "manual"] - - ["github.com/spf13/afero", "ReadOnlyFs", True, "MkdirAll", "", "", "Argument[0]", "path-injection", "manual"] - - ["github.com/spf13/afero", "RegexpFs", True, "Create", "", "", "Argument[0]", "path-injection", "manual"] - - ["github.com/spf13/afero", "RegexpFs", True, "Open", "", "", "Argument[0]", "path-injection", "manual"] - - ["github.com/spf13/afero", "RegexpFs", True, "OpenFile", "", "", "Argument[0]", "path-injection", "manual"] - - ["github.com/spf13/afero", "RegexpFs", True, "Remove", "", "", "Argument[0]", "path-injection", "manual"] - - ["github.com/spf13/afero", "RegexpFs", True, "RemoveAll", "", "", "Argument[0]", "path-injection", "manual"] - - ["github.com/spf13/afero", "RegexpFs", True, "Mkdir", "", "", "Argument[0]", "path-injection", "manual"] - - ["github.com/spf13/afero", "RegexpFs", True, "MkdirAll", "", "", "Argument[0]", "path-injection", "manual"] diff --git a/go/ql/lib/ext/github.com.uptrace.bun.model.json b/go/ql/lib/ext/github.com.uptrace.bun.model.json new file mode 100644 index 000000000000..eaec77b34913 --- /dev/null +++ b/go/ql/lib/ext/github.com.uptrace.bun.model.json @@ -0,0 +1,102 @@ +{ + "extensions": [ + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "sourceModel" + }, + "data": [ + ["github.com/uptrace/bun", "DB", true, "Query", "", "", "ReturnValue[0]", "database", "manual"], + ["github.com/uptrace/bun", "DB", true, "QueryRow", "", "", "ReturnValue", "database", "manual"], + ["github.com/uptrace/bun", "IDB", true, "QueryContext", "", "", "ReturnValue[0]", "database", "manual"], + ["github.com/uptrace/bun", "IDB", true, "QueryRowContext", "", "", "ReturnValue", "database", "manual"], + // - ["github.com/uptrace/bun", "RawQuery", True, "Exec", "", "", "Argument[0]", "database", "manual"] # Implemented in QL because variadic arguments as sources aren't supported in this format yet + // - ["github.com/uptrace/bun", "RawQuery", True, "Scan", "", "", "Argument[0]", "database", "manual"] # Implemented in QL because variadic arguments as sources aren't supported in this format yet + // - ["github.com/uptrace/bun", "SelectQuery", True, "Exec", "", "", "Argument[0]", "database", "manual"] # Implemented in QL because variadic arguments as sources aren't supported in this format yet + ["github.com/uptrace/bun", "SelectQuery", true, "Model", "", "", "Argument[0]", "database", "manual"], + ["github.com/uptrace/bun", "SelectQuery", true, "Rows", "", "", "ReturnValue[0]", "database", "manual"], + // - ["github.com/uptrace/bun", "SelectQuery", True, "Scan", "", "", "Argument[1]", "database", "manual"] # Implemented in QL because variadic arguments as sources aren't supported in this format yet + // - ["github.com/uptrace/bun", "SelectQuery", True, "ScanAndCount", "", "", "Argument[1]", "database", "manual"] # Implemented in QL because variadic arguments as sources aren't supported in this format yet + ["github.com/uptrace/bun", "Tx", true, "Query", "", "", "ReturnValue[0]", "database", "manual"], + ["github.com/uptrace/bun", "Tx", true, "QueryRow", "", "", "ReturnValue", "database", "manual"] + ] + }, + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "sinkModel" + }, + "data": [ + ["github.com/uptrace/bun", "", false, "NewRawQuery", "", "", "Argument[1]", "sql-injection", "manual"], + ["github.com/uptrace/bun", "AddColumnQuery", true, "ColumnExpr", "", "", "Argument[0]", "sql-injection", "manual"], + ["github.com/uptrace/bun", "AddColumnQuery", true, "ModelTableExpr", "", "", "Argument[0]", "sql-injection", "manual"], + ["github.com/uptrace/bun", "AddColumnQuery", true, "TableExpr", "", "", "Argument[0]", "sql-injection", "manual"], + ["github.com/uptrace/bun", "Conn", true, "Exec", "", "", "Argument[0]", "sql-injection", "manual"], + ["github.com/uptrace/bun", "Conn", true, "ExecContext", "", "", "Argument[1]", "sql-injection", "manual"], + ["github.com/uptrace/bun", "Conn", true, "NewRaw", "", "", "Argument[0]", "sql-injection", "manual"], + ["github.com/uptrace/bun", "Conn", true, "Prepare", "", "", "Argument[0]", "sql-injection", "manual"], + ["github.com/uptrace/bun", "Conn", true, "Query", "", "", "Argument[0]", "sql-injection", "manual"], + ["github.com/uptrace/bun", "Conn", true, "QueryRow", "", "", "Argument[0]", "sql-injection", "manual"], + ["github.com/uptrace/bun", "Conn", true, "PrepareContext", "", "", "Argument[1]", "sql-injection", "manual"], + ["github.com/uptrace/bun", "Conn", true, "QueryContext", "", "", "Argument[1]", "sql-injection", "manual"], + ["github.com/uptrace/bun", "Conn", true, "QueryRowContext", "", "", "Argument[1]", "sql-injection", "manual"], + ["github.com/uptrace/bun", "Conn", true, "Raw", "", "", "Argument[0]", "sql-injection", "manual"], + ["github.com/uptrace/bun", "CreateIndexQuery", true, "ColumnExpr", "", "", "Argument[0]", "sql-injection", "manual"], + ["github.com/uptrace/bun", "CreateIndexQuery", true, "ModelTableExpr", "", "", "Argument[0]", "sql-injection", "manual"], + ["github.com/uptrace/bun", "CreateIndexQuery", true, "TableExpr", "", "", "Argument[0]", "sql-injection", "manual"], + ["github.com/uptrace/bun", "CreateIndexQuery", true, "Where", "", "", "Argument[0]", "sql-injection", "manual"], + ["github.com/uptrace/bun", "CreateIndexQuery", true, "WhereOr", "", "", "Argument[0]", "sql-injection", "manual"], + ["github.com/uptrace/bun", "CreateTableQuery", true, "ColumnExpr", "", "", "Argument[0]", "sql-injection", "manual"], + ["github.com/uptrace/bun", "CreateTableQuery", true, "ModelTableExpr", "", "", "Argument[0]", "sql-injection", "manual"], + ["github.com/uptrace/bun", "CreateTableQuery", true, "TableExpr", "", "", "Argument[0]", "sql-injection", "manual"], + ["github.com/uptrace/bun", "DB", true, "Exec", "", "", "Argument[0]", "sql-injection", "manual"], + ["github.com/uptrace/bun", "DB", true, "ExecContext", "", "", "Argument[1]", "sql-injection", "manual"], + ["github.com/uptrace/bun", "DB", true, "NewRaw", "", "", "Argument[0]", "sql-injection", "manual"], + ["github.com/uptrace/bun", "DB", true, "Prepare", "", "", "Argument[0]", "sql-injection", "manual"], + ["github.com/uptrace/bun", "DB", true, "Query", "", "", "Argument[0]", "sql-injection", "manual"], + ["github.com/uptrace/bun", "DB", true, "QueryRow", "", "", "Argument[0]", "sql-injection", "manual"], + ["github.com/uptrace/bun", "DB", true, "PrepareContext", "", "", "Argument[1]", "sql-injection", "manual"], + ["github.com/uptrace/bun", "DB", true, "QueryContext", "", "", "Argument[1]", "sql-injection", "manual"], + ["github.com/uptrace/bun", "DB", true, "QueryRowContext", "", "", "Argument[1]", "sql-injection", "manual"], + ["github.com/uptrace/bun", "DB", true, "Raw", "", "", "Argument[0]", "sql-injection", "manual"], + ["github.com/uptrace/bun", "DeleteQuery", true, "TableExpr", "", "", "Argument[0]", "sql-injection", "manual"], + ["github.com/uptrace/bun", "DeleteQuery", true, "Where", "", "", "Argument[0]", "sql-injection", "manual"], + ["github.com/uptrace/bun", "DeleteQuery", true, "WhereOr", "", "", "Argument[0]", "sql-injection", "manual"], + ["github.com/uptrace/bun", "DropColumnQuery", true, "ColumnExpr", "", "", "Argument[0]", "sql-injection", "manual"], + ["github.com/uptrace/bun", "DropColumnQuery", true, "ModelTableExpr", "", "", "Argument[0]", "sql-injection", "manual"], + ["github.com/uptrace/bun", "DropColumnQuery", true, "TableExpr", "", "", "Argument[0]", "sql-injection", "manual"], + ["github.com/uptrace/bun", "DropTableQuery", true, "ModelTableExpr", "", "", "Argument[0]", "sql-injection", "manual"], + ["github.com/uptrace/bun", "DropTableQuery", true, "TableExpr", "", "", "Argument[0]", "sql-injection", "manual"], + ["github.com/uptrace/bun", "InsertQuery", true, "ColumnExpr", "", "", "Argument[0]", "sql-injection", "manual"], + ["github.com/uptrace/bun", "InsertQuery", true, "ModelTableExpr", "", "", "Argument[0]", "sql-injection", "manual"], + ["github.com/uptrace/bun", "InsertQuery", true, "TableExpr", "", "", "Argument[0]", "sql-injection", "manual"], + ["github.com/uptrace/bun", "InsertQuery", true, "Where", "", "", "Argument[0]", "sql-injection", "manual"], + ["github.com/uptrace/bun", "InsertQuery", true, "WhereOr", "", "", "Argument[0]", "sql-injection", "manual"], + ["github.com/uptrace/bun", "MergeQuery", true, "ModelTableExpr", "", "", "Argument[0]", "sql-injection", "manual"], + ["github.com/uptrace/bun", "MergeQuery", true, "TableExpr", "", "", "Argument[0]", "sql-injection", "manual"], + ["github.com/uptrace/bun", "RawQuery", true, "NewRaw", "", "", "Argument[0]", "sql-injection", "manual"], + ["github.com/uptrace/bun", "SelectQuery", true, "ColumnExpr", "", "", "Argument[0]", "sql-injection", "manual"], + ["github.com/uptrace/bun", "SelectQuery", true, "DistinctOn", "", "", "Argument[0]", "sql-injection", "manual"], + ["github.com/uptrace/bun", "SelectQuery", true, "For", "", "", "Argument[0]", "sql-injection", "manual"], + ["github.com/uptrace/bun", "SelectQuery", true, "GroupExpr", "", "", "Argument[0]", "sql-injection", "manual"], + ["github.com/uptrace/bun", "SelectQuery", true, "Having", "", "", "Argument[0]", "sql-injection", "manual"], + ["github.com/uptrace/bun", "SelectQuery", true, "ModelTableExpr", "", "", "Argument[0]", "sql-injection", "manual"], + ["github.com/uptrace/bun", "SelectQuery", true, "OrderExpr", "", "", "Argument[0]", "sql-injection", "manual"], + ["github.com/uptrace/bun", "SelectQuery", true, "TableExpr", "", "", "Argument[0]", "sql-injection", "manual"], + ["github.com/uptrace/bun", "SelectQuery", true, "Where", "", "", "Argument[0]", "sql-injection", "manual"], + ["github.com/uptrace/bun", "SelectQuery", true, "WhereOr", "", "", "Argument[0]", "sql-injection", "manual"], + ["github.com/uptrace/bun", "TruncateTableQuery", true, "TableExpr", "", "", "Argument[0]", "sql-injection", "manual"], + ["github.com/uptrace/bun", "UpdateQuery", true, "ModelTableExpr", "", "", "Argument[0]", "sql-injection", "manual"], + ["github.com/uptrace/bun", "UpdateQuery", true, "TableExpr", "", "", "Argument[0]", "sql-injection", "manual"], + ["github.com/uptrace/bun", "UpdateQuery", true, "Where", "", "", "Argument[0]", "sql-injection", "manual"], + ["github.com/uptrace/bun", "UpdateQuery", true, "WhereOr", "", "", "Argument[0]", "sql-injection", "manual"] + ] + } + ] +} +// - addsTo: +// pack: codeql/go-all +// extensible: summaryModel +// data: +// - ["github.com/uptrace/bun", "DB", True, "ScanRow", "", "", "Argument[1]", "Argument[2].ArrayElement", "taint", "manual"] # Implemented in QL because variadic arguments as outputs aren't supported in this format yet +// - ["github.com/uptrace/bun", "DB", True, "ScanRows", "", "", "Argument[1]", "Argument[2].ArrayElement", "taint", "manual"] # Implemented in QL because variadic arguments as outputs aren't supported in this format yet diff --git a/go/ql/lib/ext/github.com.uptrace.bun.model.yml b/go/ql/lib/ext/github.com.uptrace.bun.model.yml deleted file mode 100644 index 45af9c15a44c..000000000000 --- a/go/ql/lib/ext/github.com.uptrace.bun.model.yml +++ /dev/null @@ -1,91 +0,0 @@ -extensions: - - addsTo: - pack: codeql/go-all - extensible: sourceModel - data: - - ["github.com/uptrace/bun", "DB", True, "Query", "", "", "ReturnValue[0]", "database", "manual"] - - ["github.com/uptrace/bun", "DB", True, "QueryRow", "", "", "ReturnValue", "database", "manual"] - - ["github.com/uptrace/bun", "IDB", True, "QueryContext", "", "", "ReturnValue[0]", "database", "manual"] - - ["github.com/uptrace/bun", "IDB", True, "QueryRowContext", "", "", "ReturnValue", "database", "manual"] - # - ["github.com/uptrace/bun", "RawQuery", True, "Exec", "", "", "Argument[0]", "database", "manual"] # Implemented in QL because variadic arguments as sources aren't supported in this format yet - # - ["github.com/uptrace/bun", "RawQuery", True, "Scan", "", "", "Argument[0]", "database", "manual"] # Implemented in QL because variadic arguments as sources aren't supported in this format yet - # - ["github.com/uptrace/bun", "SelectQuery", True, "Exec", "", "", "Argument[0]", "database", "manual"] # Implemented in QL because variadic arguments as sources aren't supported in this format yet - - ["github.com/uptrace/bun", "SelectQuery", True, "Model", "", "", "Argument[0]", "database", "manual"] - - ["github.com/uptrace/bun", "SelectQuery", True, "Rows", "", "", "ReturnValue[0]", "database", "manual"] - # - ["github.com/uptrace/bun", "SelectQuery", True, "Scan", "", "", "Argument[1]", "database", "manual"] # Implemented in QL because variadic arguments as sources aren't supported in this format yet - # - ["github.com/uptrace/bun", "SelectQuery", True, "ScanAndCount", "", "", "Argument[1]", "database", "manual"] # Implemented in QL because variadic arguments as sources aren't supported in this format yet - - ["github.com/uptrace/bun", "Tx", True, "Query", "", "", "ReturnValue[0]", "database", "manual"] - - ["github.com/uptrace/bun", "Tx", True, "QueryRow", "", "", "ReturnValue", "database", "manual"] - - addsTo: - pack: codeql/go-all - extensible: sinkModel - data: - - ["github.com/uptrace/bun", "", False, "NewRawQuery", "", "", "Argument[1]", "sql-injection", "manual"] - - ["github.com/uptrace/bun", "AddColumnQuery", True, "ColumnExpr", "", "", "Argument[0]", "sql-injection", "manual"] - - ["github.com/uptrace/bun", "AddColumnQuery", True, "ModelTableExpr", "", "", "Argument[0]", "sql-injection", "manual"] - - ["github.com/uptrace/bun", "AddColumnQuery", True, "TableExpr", "", "", "Argument[0]", "sql-injection", "manual"] - - ["github.com/uptrace/bun", "Conn", True, "Exec", "", "", "Argument[0]", "sql-injection", "manual"] - - ["github.com/uptrace/bun", "Conn", True, "ExecContext", "", "", "Argument[1]", "sql-injection", "manual"] - - ["github.com/uptrace/bun", "Conn", True, "NewRaw", "", "", "Argument[0]", "sql-injection", "manual"] - - ["github.com/uptrace/bun", "Conn", True, "Prepare", "", "", "Argument[0]", "sql-injection", "manual"] - - ["github.com/uptrace/bun", "Conn", True, "Query", "", "", "Argument[0]", "sql-injection", "manual"] - - ["github.com/uptrace/bun", "Conn", True, "QueryRow", "", "", "Argument[0]", "sql-injection", "manual"] - - ["github.com/uptrace/bun", "Conn", True, "PrepareContext", "", "", "Argument[1]", "sql-injection", "manual"] - - ["github.com/uptrace/bun", "Conn", True, "QueryContext", "", "", "Argument[1]", "sql-injection", "manual"] - - ["github.com/uptrace/bun", "Conn", True, "QueryRowContext", "", "", "Argument[1]", "sql-injection", "manual"] - - ["github.com/uptrace/bun", "Conn", True, "Raw", "", "", "Argument[0]", "sql-injection", "manual"] - - ["github.com/uptrace/bun", "CreateIndexQuery", True, "ColumnExpr", "", "", "Argument[0]", "sql-injection", "manual"] - - ["github.com/uptrace/bun", "CreateIndexQuery", True, "ModelTableExpr", "", "", "Argument[0]", "sql-injection", "manual"] - - ["github.com/uptrace/bun", "CreateIndexQuery", True, "TableExpr", "", "", "Argument[0]", "sql-injection", "manual"] - - ["github.com/uptrace/bun", "CreateIndexQuery", True, "Where", "", "", "Argument[0]", "sql-injection", "manual"] - - ["github.com/uptrace/bun", "CreateIndexQuery", True, "WhereOr", "", "", "Argument[0]", "sql-injection", "manual"] - - ["github.com/uptrace/bun", "CreateTableQuery", True, "ColumnExpr", "", "", "Argument[0]", "sql-injection", "manual"] - - ["github.com/uptrace/bun", "CreateTableQuery", True, "ModelTableExpr", "", "", "Argument[0]", "sql-injection", "manual"] - - ["github.com/uptrace/bun", "CreateTableQuery", True, "TableExpr", "", "", "Argument[0]", "sql-injection", "manual"] - - ["github.com/uptrace/bun", "DB", True, "Exec", "", "", "Argument[0]", "sql-injection", "manual"] - - ["github.com/uptrace/bun", "DB", True, "ExecContext", "", "", "Argument[1]", "sql-injection", "manual"] - - ["github.com/uptrace/bun", "DB", True, "NewRaw", "", "", "Argument[0]", "sql-injection", "manual"] - - ["github.com/uptrace/bun", "DB", True, "Prepare", "", "", "Argument[0]", "sql-injection", "manual"] - - ["github.com/uptrace/bun", "DB", True, "Query", "", "", "Argument[0]", "sql-injection", "manual"] - - ["github.com/uptrace/bun", "DB", True, "QueryRow", "", "", "Argument[0]", "sql-injection", "manual"] - - ["github.com/uptrace/bun", "DB", True, "PrepareContext", "", "", "Argument[1]", "sql-injection", "manual"] - - ["github.com/uptrace/bun", "DB", True, "QueryContext", "", "", "Argument[1]", "sql-injection", "manual"] - - ["github.com/uptrace/bun", "DB", True, "QueryRowContext", "", "", "Argument[1]", "sql-injection", "manual"] - - ["github.com/uptrace/bun", "DB", True, "Raw", "", "", "Argument[0]", "sql-injection", "manual"] - - ["github.com/uptrace/bun", "DeleteQuery", True, "TableExpr", "", "", "Argument[0]", "sql-injection", "manual"] - - ["github.com/uptrace/bun", "DeleteQuery", True, "Where", "", "", "Argument[0]", "sql-injection", "manual"] - - ["github.com/uptrace/bun", "DeleteQuery", True, "WhereOr", "", "", "Argument[0]", "sql-injection", "manual"] - - ["github.com/uptrace/bun", "DropColumnQuery", True, "ColumnExpr", "", "", "Argument[0]", "sql-injection", "manual"] - - ["github.com/uptrace/bun", "DropColumnQuery", True, "ModelTableExpr", "", "", "Argument[0]", "sql-injection", "manual"] - - ["github.com/uptrace/bun", "DropColumnQuery", True, "TableExpr", "", "", "Argument[0]", "sql-injection", "manual"] - - ["github.com/uptrace/bun", "DropTableQuery", True, "ModelTableExpr", "", "", "Argument[0]", "sql-injection", "manual"] - - ["github.com/uptrace/bun", "DropTableQuery", True, "TableExpr", "", "", "Argument[0]", "sql-injection", "manual"] - - ["github.com/uptrace/bun", "InsertQuery", True, "ColumnExpr", "", "", "Argument[0]", "sql-injection", "manual"] - - ["github.com/uptrace/bun", "InsertQuery", True, "ModelTableExpr", "", "", "Argument[0]", "sql-injection", "manual"] - - ["github.com/uptrace/bun", "InsertQuery", True, "TableExpr", "", "", "Argument[0]", "sql-injection", "manual"] - - ["github.com/uptrace/bun", "InsertQuery", True, "Where", "", "", "Argument[0]", "sql-injection", "manual"] - - ["github.com/uptrace/bun", "InsertQuery", True, "WhereOr", "", "", "Argument[0]", "sql-injection", "manual"] - - ["github.com/uptrace/bun", "MergeQuery", True, "ModelTableExpr", "", "", "Argument[0]", "sql-injection", "manual"] - - ["github.com/uptrace/bun", "MergeQuery", True, "TableExpr", "", "", "Argument[0]", "sql-injection", "manual"] - - ["github.com/uptrace/bun", "RawQuery", True, "NewRaw", "", "", "Argument[0]", "sql-injection", "manual"] - - ["github.com/uptrace/bun", "SelectQuery", True, "ColumnExpr", "", "", "Argument[0]", "sql-injection", "manual"] - - ["github.com/uptrace/bun", "SelectQuery", True, "DistinctOn", "", "", "Argument[0]", "sql-injection", "manual"] - - ["github.com/uptrace/bun", "SelectQuery", True, "For", "", "", "Argument[0]", "sql-injection", "manual"] - - ["github.com/uptrace/bun", "SelectQuery", True, "GroupExpr", "", "", "Argument[0]", "sql-injection", "manual"] - - ["github.com/uptrace/bun", "SelectQuery", True, "Having", "", "", "Argument[0]", "sql-injection", "manual"] - - ["github.com/uptrace/bun", "SelectQuery", True, "ModelTableExpr", "", "", "Argument[0]", "sql-injection", "manual"] - - ["github.com/uptrace/bun", "SelectQuery", True, "OrderExpr", "", "", "Argument[0]", "sql-injection", "manual"] - - ["github.com/uptrace/bun", "SelectQuery", True, "TableExpr", "", "", "Argument[0]", "sql-injection", "manual"] - - ["github.com/uptrace/bun", "SelectQuery", True, "Where", "", "", "Argument[0]", "sql-injection", "manual"] - - ["github.com/uptrace/bun", "SelectQuery", True, "WhereOr", "", "", "Argument[0]", "sql-injection", "manual"] - - ["github.com/uptrace/bun", "TruncateTableQuery", True, "TableExpr", "", "", "Argument[0]", "sql-injection", "manual"] - - ["github.com/uptrace/bun", "UpdateQuery", True, "ModelTableExpr", "", "", "Argument[0]", "sql-injection", "manual"] - - ["github.com/uptrace/bun", "UpdateQuery", True, "TableExpr", "", "", "Argument[0]", "sql-injection", "manual"] - - ["github.com/uptrace/bun", "UpdateQuery", True, "Where", "", "", "Argument[0]", "sql-injection", "manual"] - - ["github.com/uptrace/bun", "UpdateQuery", True, "WhereOr", "", "", "Argument[0]", "sql-injection", "manual"] - # - addsTo: - # pack: codeql/go-all - # extensible: summaryModel - # data: - # - ["github.com/uptrace/bun", "DB", True, "ScanRow", "", "", "Argument[1]", "Argument[2].ArrayElement", "taint", "manual"] # Implemented in QL because variadic arguments as outputs aren't supported in this format yet - # - ["github.com/uptrace/bun", "DB", True, "ScanRows", "", "", "Argument[1]", "Argument[2].ArrayElement", "taint", "manual"] # Implemented in QL because variadic arguments as outputs aren't supported in this format yet diff --git a/go/ql/lib/ext/github.com.valyala.fasthttp.model.json b/go/ql/lib/ext/github.com.valyala.fasthttp.model.json new file mode 100644 index 000000000000..ba0077ebde8d --- /dev/null +++ b/go/ql/lib/ext/github.com.valyala.fasthttp.model.json @@ -0,0 +1,121 @@ +{ + "extensions": [ + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "sinkModel" + }, + "data": [ + // request-forgery + ["github.com/valyala/fasthttp", "", false, "Get", "", "", "Argument[1]", "request-forgery", "manual"], + ["github.com/valyala/fasthttp", "", false, "GetDeadline", "", "", "Argument[1]", "request-forgery", "manual"], + ["github.com/valyala/fasthttp", "", false, "GetTimeout", "", "", "Argument[1]", "request-forgery", "manual"], + ["github.com/valyala/fasthttp", "", false, "Post", "", "", "Argument[1]", "request-forgery", "manual"], + ["github.com/valyala/fasthttp", "", false, "Dial", "", "", "Argument[0]", "request-forgery[TCP Addr + Port]", "manual"], + ["github.com/valyala/fasthttp", "", false, "DialDualStack", "", "", "Argument[0]", "request-forgery[TCP Addr + Port]", "manual"], + ["github.com/valyala/fasthttp", "", false, "DialDualStackTimeout", "", "", "Argument[0]", "request-forgery[TCP Addr + Port]", "manual"], + ["github.com/valyala/fasthttp", "", false, "DialTimeout", "", "", "Argument[0]", "request-forgery[TCP Addr + Port]", "manual"], + ["github.com/valyala/fasthttp", "Client", true, "Get", "", "", "Argument[1]", "request-forgery", "manual"], + ["github.com/valyala/fasthttp", "Client", true, "GetDeadline", "", "", "Argument[1]", "request-forgery", "manual"], + ["github.com/valyala/fasthttp", "Client", true, "GetTimeout", "", "", "Argument[1]", "request-forgery", "manual"], + ["github.com/valyala/fasthttp", "Client", true, "Post", "", "", "Argument[1]", "request-forgery", "manual"], + ["github.com/valyala/fasthttp", "HostClient", true, "Get", "", "", "Argument[1]", "request-forgery", "manual"], + ["github.com/valyala/fasthttp", "HostClient", true, "GetDeadline", "", "", "Argument[1]", "request-forgery", "manual"], + ["github.com/valyala/fasthttp", "HostClient", true, "GetTimeout", "", "", "Argument[1]", "request-forgery", "manual"], + ["github.com/valyala/fasthttp", "HostClient", true, "Post", "", "", "Argument[1]", "request-forgery", "manual"], + ["github.com/valyala/fasthttp", "Request", true, "SetHost", "", "", "Argument[0]", "request-forgery", "manual"], + ["github.com/valyala/fasthttp", "Request", true, "SetHostBytes", "", "", "Argument[0]", "request-forgery", "manual"], + ["github.com/valyala/fasthttp", "Request", true, "SetRequestURI", "", "", "Argument[0]", "request-forgery", "manual"], + ["github.com/valyala/fasthttp", "Request", true, "SetRequestURIBytes", "", "", "Argument[0]", "request-forgery", "manual"], + ["github.com/valyala/fasthttp", "Request", true, "SetURI", "", "", "Argument[0]", "request-forgery", "manual"], + ["github.com/valyala/fasthttp", "TCPDialer", true, "Dial", "", "", "Argument[0]", "request-forgery[TCP Addr + Port]", "manual"], + ["github.com/valyala/fasthttp", "TCPDialer", true, "DialDualStack", "", "", "Argument[0]", "request-forgery[TCP Addr + Port]", "manual"], + ["github.com/valyala/fasthttp", "TCPDialer", true, "DialDualStackTimeout", "", "", "Argument[0]", "request-forgery[TCP Addr + Port]", "manual"], + ["github.com/valyala/fasthttp", "TCPDialer", true, "DialTimeout", "", "", "Argument[0]", "request-forgery[TCP Addr + Port]", "manual"], + // path-injection + ["github.com/valyala/fasthttp", "", false, "SaveMultipartFile", "", "", "Argument[1]", "path-injection", "manual"], + ["github.com/valyala/fasthttp", "", false, "ServeFile", "", "", "Argument[1]", "path-injection", "manual"], + ["github.com/valyala/fasthttp", "", false, "ServeFileBytes", "", "", "Argument[1]", "path-injection", "manual"], + ["github.com/valyala/fasthttp", "", false, "ServeFileBytesUncompressed", "", "", "Argument[1]", "path-injection", "manual"], + ["github.com/valyala/fasthttp", "", false, "ServeFileUncompressed", "", "", "Argument[1]", "path-injection", "manual"], + ["github.com/valyala/fasthttp", "RequestCtx", true, "SendFile", "", "", "Argument[0]", "path-injection", "manual"], + ["github.com/valyala/fasthttp", "RequestCtx", true, "SendFileBytes", "", "", "Argument[0]", "path-injection", "manual"], + ["github.com/valyala/fasthttp", "Response", true, "SendFile", "", "", "Argument[0]", "path-injection", "manual"], + // url-redirection + ["github.com/valyala/fasthttp", "RequestCtx", true, "Redirect", "", "", "Argument[0]", "url-redirection", "manual"], + ["github.com/valyala/fasthttp", "RequestCtx", true, "RedirectBytes", "", "", "Argument[0]", "url-redirection", "manual"] + ] + }, + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "summaryModel" + }, + "data": [ + ["github.com/valyala/fasthttp", "URI", true, "SetHost", "", "", "Argument[0]", "Argument[receiver]", "taint", "manual"], + ["github.com/valyala/fasthttp", "URI", true, "SetHostBytes", "", "", "Argument[0]", "Argument[receiver]", "taint", "manual"], + ["github.com/valyala/fasthttp", "URI", true, "Update", "", "", "Argument[0]", "Argument[receiver]", "taint", "manual"], + ["github.com/valyala/fasthttp", "URI", true, "UpdateBytes", "", "", "Argument[0]", "Argument[receiver]", "taint", "manual"], + ["github.com/valyala/fasthttp", "URI", true, "Parse", "", "", "Argument[0..1]", "Argument[receiver]", "taint", "manual"] + ] + }, + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "sourceModel" + }, + "data": [ + ["github.com/valyala/fasthttp", "Args", true, "Peek", "", "", "ReturnValue[0]", "remote", "manual"], + ["github.com/valyala/fasthttp", "Args", true, "PeekBytes", "", "", "ReturnValue[0]", "remote", "manual"], + ["github.com/valyala/fasthttp", "Args", true, "PeekMulti", "", "", "ReturnValue[0]", "remote", "manual"], + ["github.com/valyala/fasthttp", "Args", true, "PeekMultiBytes", "", "", "ReturnValue[0]", "remote", "manual"], + ["github.com/valyala/fasthttp", "Args", true, "QueryString", "", "", "ReturnValue[0]", "remote", "manual"], + ["github.com/valyala/fasthttp", "Args", true, "String", "", "", "ReturnValue[0]", "remote", "manual"], + ["github.com/valyala/fasthttp", "URI", true, "FullURI", "", "", "ReturnValue[0]", "remote", "manual"], + ["github.com/valyala/fasthttp", "URI", true, "LastPathSegment", "", "", "ReturnValue[0]", "remote", "manual"], + ["github.com/valyala/fasthttp", "URI", true, "Path", "", "", "ReturnValue[0]", "remote", "manual"], + ["github.com/valyala/fasthttp", "URI", true, "PathOriginal", "", "", "ReturnValue[0]", "remote", "manual"], + ["github.com/valyala/fasthttp", "URI", true, "QueryString", "", "", "ReturnValue[0]", "remote", "manual"], + ["github.com/valyala/fasthttp", "URI", true, "String", "", "", "ReturnValue[0]", "remote", "manual"], + ["github.com/valyala/fasthttp", "Request", true, "Body", "", "", "ReturnValue[0]", "remote", "manual"], + ["github.com/valyala/fasthttp", "Request", true, "BodyGunzip", "", "", "ReturnValue[0]", "remote", "manual"], + ["github.com/valyala/fasthttp", "Request", true, "BodyInflate", "", "", "ReturnValue[0]", "remote", "manual"], + ["github.com/valyala/fasthttp", "Request", true, "BodyStream", "", "", "ReturnValue[0]", "remote", "manual"], + ["github.com/valyala/fasthttp", "Request", true, "BodyUnbrotli", "", "", "ReturnValue[0]", "remote", "manual"], + ["github.com/valyala/fasthttp", "Request", true, "BodyUncompressed", "", "", "ReturnValue[0]", "remote", "manual"], + ["github.com/valyala/fasthttp", "Request", true, "ContinueReadBody", "", "", "Argument[0]", "remote", "manual"], + ["github.com/valyala/fasthttp", "Request", true, "ContinueReadBodyStream", "", "", "Argument[0]", "remote", "manual"], + ["github.com/valyala/fasthttp", "Request", true, "Host", "", "", "ReturnValue[0]", "remote", "manual"], + ["github.com/valyala/fasthttp", "Request", true, "ReadBody", "", "", "Argument[0]", "remote", "manual"], + ["github.com/valyala/fasthttp", "Request", true, "ReadLimitBody", "", "", "Argument[0]", "remote", "manual"], + ["github.com/valyala/fasthttp", "Request", true, "RequestURI", "", "", "ReturnValue[0]", "remote", "manual"], + ["github.com/valyala/fasthttp", "RequestCtx", true, "Host", "", "", "ReturnValue[0]", "remote", "manual"], + ["github.com/valyala/fasthttp", "RequestCtx", true, "Path", "", "", "ReturnValue[0]", "remote", "manual"], + ["github.com/valyala/fasthttp", "RequestCtx", true, "PostBody", "", "", "ReturnValue[0]", "remote", "manual"], + ["github.com/valyala/fasthttp", "RequestCtx", true, "Referer", "", "", "ReturnValue[0]", "remote", "manual"], + ["github.com/valyala/fasthttp", "RequestCtx", true, "RequestBodyStream", "", "", "ReturnValue[0]", "remote", "manual"], + ["github.com/valyala/fasthttp", "RequestCtx", true, "RequestURI", "", "", "ReturnValue[0]", "remote", "manual"], + ["github.com/valyala/fasthttp", "RequestCtx", true, "String", "", "", "ReturnValue[0]", "remote", "manual"], + ["github.com/valyala/fasthttp", "RequestCtx", true, "UserAgent", "", "", "ReturnValue[0]", "remote", "manual"], + ["github.com/valyala/fasthttp", "RequestHeader", true, "ContentEncoding", "", "", "ReturnValue[0]", "remote", "manual"], + ["github.com/valyala/fasthttp", "RequestHeader", true, "ContentType", "", "", "ReturnValue[0]", "remote", "manual"], + ["github.com/valyala/fasthttp", "RequestHeader", true, "Cookie", "", "", "ReturnValue[0]", "remote", "manual"], + ["github.com/valyala/fasthttp", "RequestHeader", true, "CookieBytes", "", "", "ReturnValue[0]", "remote", "manual"], + ["github.com/valyala/fasthttp", "RequestHeader", true, "Header", "", "", "ReturnValue[0]", "remote", "manual"], + ["github.com/valyala/fasthttp", "RequestHeader", true, "Host", "", "", "ReturnValue[0]", "remote", "manual"], + ["github.com/valyala/fasthttp", "RequestHeader", true, "MultipartFormBoundary", "", "", "ReturnValue[0]", "remote", "manual"], + ["github.com/valyala/fasthttp", "RequestHeader", true, "Peek", "", "", "ReturnValue[0]", "remote", "manual"], + ["github.com/valyala/fasthttp", "RequestHeader", true, "PeekAll", "", "", "ReturnValue[0]", "remote", "manual"], + ["github.com/valyala/fasthttp", "RequestHeader", true, "PeekBytes", "", "", "ReturnValue[0]", "remote", "manual"], + ["github.com/valyala/fasthttp", "RequestHeader", true, "PeekKeys", "", "", "ReturnValue[0]", "remote", "manual"], + ["github.com/valyala/fasthttp", "RequestHeader", true, "PeekTrailerKeys", "", "", "ReturnValue[0]", "remote", "manual"], + ["github.com/valyala/fasthttp", "RequestHeader", true, "RawHeaders", "", "", "ReturnValue[0]", "remote", "manual"], + ["github.com/valyala/fasthttp", "RequestHeader", true, "Referer", "", "", "ReturnValue[0]", "remote", "manual"], + ["github.com/valyala/fasthttp", "RequestHeader", true, "RequestURI", "", "", "ReturnValue[0]", "remote", "manual"], + ["github.com/valyala/fasthttp", "RequestHeader", true, "String", "", "", "ReturnValue[0]", "remote", "manual"], + ["github.com/valyala/fasthttp", "RequestHeader", true, "TrailerHeader", "", "", "ReturnValue[0]", "remote", "manual"], + ["github.com/valyala/fasthttp", "RequestHeader", true, "UserAgent", "", "", "ReturnValue[0]", "remote", "manual"] + ] + } + ] +} diff --git a/go/ql/lib/ext/github.com.valyala.fasthttp.model.yml b/go/ql/lib/ext/github.com.valyala.fasthttp.model.yml deleted file mode 100644 index 573825276281..000000000000 --- a/go/ql/lib/ext/github.com.valyala.fasthttp.model.yml +++ /dev/null @@ -1,106 +0,0 @@ -extensions: - - addsTo: - pack: codeql/go-all - extensible: sinkModel - data: - # request-forgery - - ["github.com/valyala/fasthttp", "", False, "Get", "", "", "Argument[1]", "request-forgery", "manual"] - - ["github.com/valyala/fasthttp", "", False, "GetDeadline", "", "", "Argument[1]", "request-forgery", "manual"] - - ["github.com/valyala/fasthttp", "", False, "GetTimeout", "", "", "Argument[1]", "request-forgery", "manual"] - - ["github.com/valyala/fasthttp", "", False, "Post", "", "", "Argument[1]", "request-forgery", "manual"] - - ["github.com/valyala/fasthttp", "", False, "Dial", "", "", "Argument[0]", "request-forgery[TCP Addr + Port]", "manual"] - - ["github.com/valyala/fasthttp", "", False, "DialDualStack", "", "", "Argument[0]", "request-forgery[TCP Addr + Port]", "manual"] - - ["github.com/valyala/fasthttp", "", False, "DialDualStackTimeout", "", "", "Argument[0]", "request-forgery[TCP Addr + Port]", "manual"] - - ["github.com/valyala/fasthttp", "", False, "DialTimeout", "", "", "Argument[0]", "request-forgery[TCP Addr + Port]", "manual"] - - ["github.com/valyala/fasthttp", "Client", True, "Get", "", "", "Argument[1]", "request-forgery", "manual"] - - ["github.com/valyala/fasthttp", "Client", True, "GetDeadline", "", "", "Argument[1]", "request-forgery", "manual"] - - ["github.com/valyala/fasthttp", "Client", True, "GetTimeout", "", "", "Argument[1]", "request-forgery", "manual"] - - ["github.com/valyala/fasthttp", "Client", True, "Post", "", "", "Argument[1]", "request-forgery", "manual"] - - ["github.com/valyala/fasthttp", "HostClient", True, "Get", "", "", "Argument[1]", "request-forgery", "manual"] - - ["github.com/valyala/fasthttp", "HostClient", True, "GetDeadline", "", "", "Argument[1]", "request-forgery", "manual"] - - ["github.com/valyala/fasthttp", "HostClient", True, "GetTimeout", "", "", "Argument[1]", "request-forgery", "manual"] - - ["github.com/valyala/fasthttp", "HostClient", True, "Post", "", "", "Argument[1]", "request-forgery", "manual"] - - ["github.com/valyala/fasthttp", "Request", True, "SetHost", "", "", "Argument[0]", "request-forgery", "manual"] - - ["github.com/valyala/fasthttp", "Request", True, "SetHostBytes", "", "", "Argument[0]", "request-forgery", "manual"] - - ["github.com/valyala/fasthttp", "Request", True, "SetRequestURI", "", "", "Argument[0]", "request-forgery", "manual"] - - ["github.com/valyala/fasthttp", "Request", True, "SetRequestURIBytes", "", "", "Argument[0]", "request-forgery", "manual"] - - ["github.com/valyala/fasthttp", "Request", True, "SetURI", "", "", "Argument[0]", "request-forgery", "manual"] - - ["github.com/valyala/fasthttp", "TCPDialer", True, "Dial", "", "", "Argument[0]", "request-forgery[TCP Addr + Port]", "manual"] - - ["github.com/valyala/fasthttp", "TCPDialer", True, "DialDualStack", "", "", "Argument[0]", "request-forgery[TCP Addr + Port]", "manual"] - - ["github.com/valyala/fasthttp", "TCPDialer", True, "DialDualStackTimeout", "", "", "Argument[0]", "request-forgery[TCP Addr + Port]", "manual"] - - ["github.com/valyala/fasthttp", "TCPDialer", True, "DialTimeout", "", "", "Argument[0]", "request-forgery[TCP Addr + Port]", "manual"] - # path-injection - - ["github.com/valyala/fasthttp", "", False, "SaveMultipartFile", "", "", "Argument[1]", "path-injection", "manual"] - - ["github.com/valyala/fasthttp", "", False, "ServeFile", "", "", "Argument[1]", "path-injection", "manual"] - - ["github.com/valyala/fasthttp", "", False, "ServeFileBytes", "", "", "Argument[1]", "path-injection", "manual"] - - ["github.com/valyala/fasthttp", "", False, "ServeFileBytesUncompressed", "", "", "Argument[1]", "path-injection", "manual"] - - ["github.com/valyala/fasthttp", "", False, "ServeFileUncompressed", "", "", "Argument[1]", "path-injection", "manual"] - - ["github.com/valyala/fasthttp", "RequestCtx", True, "SendFile", "", "", "Argument[0]", "path-injection", "manual"] - - ["github.com/valyala/fasthttp", "RequestCtx", True, "SendFileBytes", "", "", "Argument[0]", "path-injection", "manual"] - - ["github.com/valyala/fasthttp", "Response", True, "SendFile", "", "", "Argument[0]", "path-injection", "manual"] - # url-redirection - - ["github.com/valyala/fasthttp", "RequestCtx", True, "Redirect", "", "", "Argument[0]", "url-redirection", "manual"] - - ["github.com/valyala/fasthttp", "RequestCtx", True, "RedirectBytes", "", "", "Argument[0]", "url-redirection", "manual"] - - addsTo: - pack: codeql/go-all - extensible: summaryModel - data: - - ["github.com/valyala/fasthttp", "URI", True, "SetHost", "", "", "Argument[0]", "Argument[receiver]", "taint", "manual"] - - ["github.com/valyala/fasthttp", "URI", True, "SetHostBytes", "", "", "Argument[0]", "Argument[receiver]", "taint", "manual"] - - ["github.com/valyala/fasthttp", "URI", True, "Update", "", "", "Argument[0]", "Argument[receiver]", "taint", "manual"] - - ["github.com/valyala/fasthttp", "URI", True, "UpdateBytes", "", "", "Argument[0]", "Argument[receiver]", "taint", "manual"] - - ["github.com/valyala/fasthttp", "URI", True, "Parse", "", "", "Argument[0..1]", "Argument[receiver]", "taint", "manual"] - - addsTo: - pack: codeql/go-all - extensible: sourceModel - data: - - ["github.com/valyala/fasthttp", "Args", True, "Peek", "", "", "ReturnValue[0]", "remote", "manual"] - - ["github.com/valyala/fasthttp", "Args", True, "PeekBytes", "", "", "ReturnValue[0]", "remote", "manual"] - - ["github.com/valyala/fasthttp", "Args", True, "PeekMulti", "", "", "ReturnValue[0]", "remote", "manual"] - - ["github.com/valyala/fasthttp", "Args", True, "PeekMultiBytes", "", "", "ReturnValue[0]", "remote", "manual"] - - ["github.com/valyala/fasthttp", "Args", True, "QueryString", "", "", "ReturnValue[0]", "remote", "manual"] - - ["github.com/valyala/fasthttp", "Args", True, "String", "", "", "ReturnValue[0]", "remote", "manual"] - - ["github.com/valyala/fasthttp", "URI", True, "FullURI", "", "", "ReturnValue[0]", "remote", "manual"] - - ["github.com/valyala/fasthttp", "URI", True, "LastPathSegment", "", "", "ReturnValue[0]", "remote", "manual"] - - ["github.com/valyala/fasthttp", "URI", True, "Path", "", "", "ReturnValue[0]", "remote", "manual"] - - ["github.com/valyala/fasthttp", "URI", True, "PathOriginal", "", "", "ReturnValue[0]", "remote", "manual"] - - ["github.com/valyala/fasthttp", "URI", True, "QueryString", "", "", "ReturnValue[0]", "remote", "manual"] - - ["github.com/valyala/fasthttp", "URI", True, "String", "", "", "ReturnValue[0]", "remote", "manual"] - - ["github.com/valyala/fasthttp", "Request", True, "Body", "", "", "ReturnValue[0]", "remote", "manual"] - - ["github.com/valyala/fasthttp", "Request", True, "BodyGunzip", "", "", "ReturnValue[0]", "remote", "manual"] - - ["github.com/valyala/fasthttp", "Request", True, "BodyInflate", "", "", "ReturnValue[0]", "remote", "manual"] - - ["github.com/valyala/fasthttp", "Request", True, "BodyStream", "", "", "ReturnValue[0]", "remote", "manual"] - - ["github.com/valyala/fasthttp", "Request", True, "BodyUnbrotli", "", "", "ReturnValue[0]", "remote", "manual"] - - ["github.com/valyala/fasthttp", "Request", True, "BodyUncompressed", "", "", "ReturnValue[0]", "remote", "manual"] - - ["github.com/valyala/fasthttp", "Request", True, "ContinueReadBody", "", "", "Argument[0]", "remote", "manual"] - - ["github.com/valyala/fasthttp", "Request", True, "ContinueReadBodyStream", "", "", "Argument[0]", "remote", "manual"] - - ["github.com/valyala/fasthttp", "Request", True, "Host", "", "", "ReturnValue[0]", "remote", "manual"] - - ["github.com/valyala/fasthttp", "Request", True, "ReadBody", "", "", "Argument[0]", "remote", "manual"] - - ["github.com/valyala/fasthttp", "Request", True, "ReadLimitBody", "", "", "Argument[0]", "remote", "manual"] - - ["github.com/valyala/fasthttp", "Request", True, "RequestURI", "", "", "ReturnValue[0]", "remote", "manual"] - - ["github.com/valyala/fasthttp", "RequestCtx", True, "Host", "", "", "ReturnValue[0]", "remote", "manual"] - - ["github.com/valyala/fasthttp", "RequestCtx", True, "Path", "", "", "ReturnValue[0]", "remote", "manual"] - - ["github.com/valyala/fasthttp", "RequestCtx", True, "PostBody", "", "", "ReturnValue[0]", "remote", "manual"] - - ["github.com/valyala/fasthttp", "RequestCtx", True, "Referer", "", "", "ReturnValue[0]", "remote", "manual"] - - ["github.com/valyala/fasthttp", "RequestCtx", True, "RequestBodyStream", "", "", "ReturnValue[0]", "remote", "manual"] - - ["github.com/valyala/fasthttp", "RequestCtx", True, "RequestURI", "", "", "ReturnValue[0]", "remote", "manual"] - - ["github.com/valyala/fasthttp", "RequestCtx", True, "String", "", "", "ReturnValue[0]", "remote", "manual"] - - ["github.com/valyala/fasthttp", "RequestCtx", True, "UserAgent", "", "", "ReturnValue[0]", "remote", "manual"] - - ["github.com/valyala/fasthttp", "RequestHeader", True, "ContentEncoding", "", "", "ReturnValue[0]", "remote", "manual"] - - ["github.com/valyala/fasthttp", "RequestHeader", True, "ContentType", "", "", "ReturnValue[0]", "remote", "manual"] - - ["github.com/valyala/fasthttp", "RequestHeader", True, "Cookie", "", "", "ReturnValue[0]", "remote", "manual"] - - ["github.com/valyala/fasthttp", "RequestHeader", True, "CookieBytes", "", "", "ReturnValue[0]", "remote", "manual"] - - ["github.com/valyala/fasthttp", "RequestHeader", True, "Header", "", "", "ReturnValue[0]", "remote", "manual"] - - ["github.com/valyala/fasthttp", "RequestHeader", True, "Host", "", "", "ReturnValue[0]", "remote", "manual"] - - ["github.com/valyala/fasthttp", "RequestHeader", True, "MultipartFormBoundary", "", "", "ReturnValue[0]", "remote", "manual"] - - ["github.com/valyala/fasthttp", "RequestHeader", True, "Peek", "", "", "ReturnValue[0]", "remote", "manual"] - - ["github.com/valyala/fasthttp", "RequestHeader", True, "PeekAll", "", "", "ReturnValue[0]", "remote", "manual"] - - ["github.com/valyala/fasthttp", "RequestHeader", True, "PeekBytes", "", "", "ReturnValue[0]", "remote", "manual"] - - ["github.com/valyala/fasthttp", "RequestHeader", True, "PeekKeys", "", "", "ReturnValue[0]", "remote", "manual"] - - ["github.com/valyala/fasthttp", "RequestHeader", True, "PeekTrailerKeys", "", "", "ReturnValue[0]", "remote", "manual"] - - ["github.com/valyala/fasthttp", "RequestHeader", True, "RawHeaders", "", "", "ReturnValue[0]", "remote", "manual"] - - ["github.com/valyala/fasthttp", "RequestHeader", True, "Referer", "", "", "ReturnValue[0]", "remote", "manual"] - - ["github.com/valyala/fasthttp", "RequestHeader", True, "RequestURI", "", "", "ReturnValue[0]", "remote", "manual"] - - ["github.com/valyala/fasthttp", "RequestHeader", True, "String", "", "", "ReturnValue[0]", "remote", "manual"] - - ["github.com/valyala/fasthttp", "RequestHeader", True, "TrailerHeader", "", "", "ReturnValue[0]", "remote", "manual"] - - ["github.com/valyala/fasthttp", "RequestHeader", True, "UserAgent", "", "", "ReturnValue[0]", "remote", "manual"] diff --git a/go/ql/lib/ext/go.mongodb.org.mongo-driver.mongo.model.json b/go/ql/lib/ext/go.mongodb.org.mongo-driver.mongo.model.json new file mode 100644 index 000000000000..660e7f83c813 --- /dev/null +++ b/go/ql/lib/ext/go.mongodb.org.mongo-driver.mongo.model.json @@ -0,0 +1,58 @@ +{ + "extensions": [ + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "sourceModel" + }, + "data": [ + ["go.mongodb.org/mongo-driver/mongo", "Client", true, "Watch", "", "", "ReturnValue[0]", "database", "manual"], + ["go.mongodb.org/mongo-driver/mongo", "Collection", true, "Aggregate", "", "", "ReturnValue[0]", "database", "manual"], + ["go.mongodb.org/mongo-driver/mongo", "Collection", true, "Distinct", "", "", "ReturnValue[0]", "database", "manual"], + ["go.mongodb.org/mongo-driver/mongo", "Collection", true, "Find", "", "", "ReturnValue[0]", "database", "manual"], + ["go.mongodb.org/mongo-driver/mongo", "Collection", true, "FindOne", "", "", "ReturnValue", "database", "manual"], + ["go.mongodb.org/mongo-driver/mongo", "Collection", true, "FindOneAndDelete", "", "", "ReturnValue", "database", "manual"], + ["go.mongodb.org/mongo-driver/mongo", "Collection", true, "FindOneAndReplace", "", "", "ReturnValue", "database", "manual"], + ["go.mongodb.org/mongo-driver/mongo", "Collection", true, "FindOneAndUpdate", "", "", "ReturnValue", "database", "manual"], + ["go.mongodb.org/mongo-driver/mongo", "Collection", true, "Watch", "", "", "ReturnValue[0]", "database", "manual"], + ["go.mongodb.org/mongo-driver/mongo", "Database", true, "Aggregate", "", "", "ReturnValue[0]", "database", "manual"], + ["go.mongodb.org/mongo-driver/mongo", "Database", true, "Watch", "", "", "ReturnValue[0]", "database", "manual"] + ] + }, + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "sinkModel" + }, + "data": [ + ["go.mongodb.org/mongo-driver/mongo", "Collection", true, "Aggregate", "", "", "Argument[1]", "nosql-injection", "manual"], + ["go.mongodb.org/mongo-driver/mongo", "Collection", true, "CountDocuments", "", "", "Argument[1]", "nosql-injection", "manual"], + ["go.mongodb.org/mongo-driver/mongo", "Collection", true, "DeleteMany", "", "", "Argument[1]", "nosql-injection", "manual"], + ["go.mongodb.org/mongo-driver/mongo", "Collection", true, "DeleteOne", "", "", "Argument[1]", "nosql-injection", "manual"], + ["go.mongodb.org/mongo-driver/mongo", "Collection", true, "Distinct", "", "", "Argument[2]", "nosql-injection", "manual"], + ["go.mongodb.org/mongo-driver/mongo", "Collection", true, "Find", "", "", "Argument[1]", "nosql-injection", "manual"], + ["go.mongodb.org/mongo-driver/mongo", "Collection", true, "FindOne", "", "", "Argument[1]", "nosql-injection", "manual"], + ["go.mongodb.org/mongo-driver/mongo", "Collection", true, "FindOneAndDelete", "", "", "Argument[1]", "nosql-injection", "manual"], + ["go.mongodb.org/mongo-driver/mongo", "Collection", true, "FindOneAndReplace", "", "", "Argument[1]", "nosql-injection", "manual"], + ["go.mongodb.org/mongo-driver/mongo", "Collection", true, "FindOneAndUpdate", "", "", "Argument[1]", "nosql-injection", "manual"], + ["go.mongodb.org/mongo-driver/mongo", "Collection", true, "ReplaceOne", "", "", "Argument[1]", "nosql-injection", "manual"], + ["go.mongodb.org/mongo-driver/mongo", "Collection", true, "UpdateMany", "", "", "Argument[1]", "nosql-injection", "manual"], + ["go.mongodb.org/mongo-driver/mongo", "Collection", true, "UpdateOne", "", "", "Argument[1]", "nosql-injection", "manual"], + ["go.mongodb.org/mongo-driver/mongo", "Collection", true, "Watch", "", "", "Argument[1]", "nosql-injection", "manual"] + ] + }, + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "summaryModel" + }, + "data": [ + ["go.mongodb.org/mongo-driver/mongo", "ChangeStream", true, "Decode", "", "", "Argument[receiver]", "Argument[0]", "taint", "manual"], + ["go.mongodb.org/mongo-driver/mongo", "Cursor", true, "All", "", "", "Argument[receiver]", "Argument[1]", "taint", "manual"], + ["go.mongodb.org/mongo-driver/mongo", "Cursor", true, "Decode", "", "", "Argument[receiver]", "Argument[0]", "taint", "manual"], + ["go.mongodb.org/mongo-driver/mongo", "SingleResult", true, "Decode", "", "", "Argument[receiver]", "Argument[0]", "taint", "manual"], + ["go.mongodb.org/mongo-driver/mongo", "SingleResult", true, "Raw", "", "", "Argument[receiver]", "ReturnValue[0]", "taint", "manual"] + ] + } + ] +} diff --git a/go/ql/lib/ext/go.mongodb.org.mongo-driver.mongo.model.yml b/go/ql/lib/ext/go.mongodb.org.mongo-driver.mongo.model.yml deleted file mode 100644 index 2b353ebb21d0..000000000000 --- a/go/ql/lib/ext/go.mongodb.org.mongo-driver.mongo.model.yml +++ /dev/null @@ -1,43 +0,0 @@ -extensions: - - addsTo: - pack: codeql/go-all - extensible: sourceModel - data: - - ["go.mongodb.org/mongo-driver/mongo", "Client", True, "Watch", "", "", "ReturnValue[0]", "database", "manual"] - - ["go.mongodb.org/mongo-driver/mongo", "Collection", True, "Aggregate", "", "", "ReturnValue[0]", "database", "manual"] - - ["go.mongodb.org/mongo-driver/mongo", "Collection", True, "Distinct", "", "", "ReturnValue[0]", "database", "manual"] - - ["go.mongodb.org/mongo-driver/mongo", "Collection", True, "Find", "", "", "ReturnValue[0]", "database", "manual"] - - ["go.mongodb.org/mongo-driver/mongo", "Collection", True, "FindOne", "", "", "ReturnValue", "database", "manual"] - - ["go.mongodb.org/mongo-driver/mongo", "Collection", True, "FindOneAndDelete", "", "", "ReturnValue", "database", "manual"] - - ["go.mongodb.org/mongo-driver/mongo", "Collection", True, "FindOneAndReplace", "", "", "ReturnValue", "database", "manual"] - - ["go.mongodb.org/mongo-driver/mongo", "Collection", True, "FindOneAndUpdate", "", "", "ReturnValue", "database", "manual"] - - ["go.mongodb.org/mongo-driver/mongo", "Collection", True, "Watch", "", "", "ReturnValue[0]", "database", "manual"] - - ["go.mongodb.org/mongo-driver/mongo", "Database", True, "Aggregate", "", "", "ReturnValue[0]", "database", "manual"] - - ["go.mongodb.org/mongo-driver/mongo", "Database", True, "Watch", "", "", "ReturnValue[0]", "database", "manual"] - - addsTo: - pack: codeql/go-all - extensible: sinkModel - data: - - ["go.mongodb.org/mongo-driver/mongo", "Collection", True, "Aggregate", "", "", "Argument[1]", "nosql-injection", "manual"] - - ["go.mongodb.org/mongo-driver/mongo", "Collection", True, "CountDocuments", "", "", "Argument[1]", "nosql-injection", "manual"] - - ["go.mongodb.org/mongo-driver/mongo", "Collection", True, "DeleteMany", "", "", "Argument[1]", "nosql-injection", "manual"] - - ["go.mongodb.org/mongo-driver/mongo", "Collection", True, "DeleteOne", "", "", "Argument[1]", "nosql-injection", "manual"] - - ["go.mongodb.org/mongo-driver/mongo", "Collection", True, "Distinct", "", "", "Argument[2]", "nosql-injection", "manual"] - - ["go.mongodb.org/mongo-driver/mongo", "Collection", True, "Find", "", "", "Argument[1]", "nosql-injection", "manual"] - - ["go.mongodb.org/mongo-driver/mongo", "Collection", True, "FindOne", "", "", "Argument[1]", "nosql-injection", "manual"] - - ["go.mongodb.org/mongo-driver/mongo", "Collection", True, "FindOneAndDelete", "", "", "Argument[1]", "nosql-injection", "manual"] - - ["go.mongodb.org/mongo-driver/mongo", "Collection", True, "FindOneAndReplace", "", "", "Argument[1]", "nosql-injection", "manual"] - - ["go.mongodb.org/mongo-driver/mongo", "Collection", True, "FindOneAndUpdate", "", "", "Argument[1]", "nosql-injection", "manual"] - - ["go.mongodb.org/mongo-driver/mongo", "Collection", True, "ReplaceOne", "", "", "Argument[1]", "nosql-injection", "manual"] - - ["go.mongodb.org/mongo-driver/mongo", "Collection", True, "UpdateMany", "", "", "Argument[1]", "nosql-injection", "manual"] - - ["go.mongodb.org/mongo-driver/mongo", "Collection", True, "UpdateOne", "", "", "Argument[1]", "nosql-injection", "manual"] - - ["go.mongodb.org/mongo-driver/mongo", "Collection", True, "Watch", "", "", "Argument[1]", "nosql-injection", "manual"] - - addsTo: - pack: codeql/go-all - extensible: summaryModel - data: - - ["go.mongodb.org/mongo-driver/mongo", "ChangeStream", True, "Decode", "", "", "Argument[receiver]", "Argument[0]", "taint", "manual"] - - ["go.mongodb.org/mongo-driver/mongo", "Cursor", True, "All", "", "", "Argument[receiver]", "Argument[1]", "taint", "manual"] - - ["go.mongodb.org/mongo-driver/mongo", "Cursor", True, "Decode", "", "", "Argument[receiver]", "Argument[0]", "taint", "manual"] - - ["go.mongodb.org/mongo-driver/mongo", "SingleResult", True, "Decode", "", "", "Argument[receiver]", "Argument[0]", "taint", "manual"] - - ["go.mongodb.org/mongo-driver/mongo", "SingleResult", True, "Raw", "", "", "Argument[receiver]", "ReturnValue[0]", "taint", "manual"] diff --git a/go/ql/lib/ext/go.uber.org.zap.model.json b/go/ql/lib/ext/go.uber.org.zap.model.json new file mode 100644 index 000000000000..bd5a3040f760 --- /dev/null +++ b/go/ql/lib/ext/go.uber.org.zap.model.json @@ -0,0 +1,64 @@ +{ + "extensions": [ + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "sinkModel" + }, + "data": [ + ["go.uber.org/zap", "Logger", true, "DPanic", "", "", "Argument[0..1]", "log-injection", "manual"], + ["go.uber.org/zap", "Logger", true, "Debug", "", "", "Argument[0..1]", "log-injection", "manual"], + ["go.uber.org/zap", "Logger", true, "Error", "", "", "Argument[0..1]", "log-injection", "manual"], + ["go.uber.org/zap", "Logger", true, "Fatal", "", "", "Argument[0..1]", "log-injection", "manual"], + ["go.uber.org/zap", "Logger", true, "Info", "", "", "Argument[0..1]", "log-injection", "manual"], + ["go.uber.org/zap", "Logger", true, "Named", "", "", "Argument[0]", "log-injection", "manual"], + ["go.uber.org/zap", "Logger", true, "Panic", "", "", "Argument[0..1]", "log-injection", "manual"], + ["go.uber.org/zap", "Logger", true, "Warn", "", "", "Argument[0..1]", "log-injection", "manual"], + ["go.uber.org/zap", "Logger", true, "With", "", "", "Argument[0]", "log-injection", "manual"], + ["go.uber.org/zap", "Logger", true, "WithOptions", "", "", "Argument[0]", "log-injection", "manual"], + ["go.uber.org/zap", "SugaredLogger", true, "DPanic", "", "", "Argument[0]", "log-injection", "manual"], + ["go.uber.org/zap", "SugaredLogger", true, "DPanicf", "", "", "Argument[0..1]", "log-injection", "manual"], + ["go.uber.org/zap", "SugaredLogger", true, "DPanicw", "", "", "Argument[0..1]", "log-injection", "manual"], + ["go.uber.org/zap", "SugaredLogger", true, "Debug", "", "", "Argument[0]", "log-injection", "manual"], + ["go.uber.org/zap", "SugaredLogger", true, "Debugf", "", "", "Argument[0..1]", "log-injection", "manual"], + ["go.uber.org/zap", "SugaredLogger", true, "Debugw", "", "", "Argument[0..1]", "log-injection", "manual"], + ["go.uber.org/zap", "SugaredLogger", true, "Error", "", "", "Argument[0]", "log-injection", "manual"], + ["go.uber.org/zap", "SugaredLogger", true, "Errorf", "", "", "Argument[0..1]", "log-injection", "manual"], + ["go.uber.org/zap", "SugaredLogger", true, "Errorw", "", "", "Argument[0..1]", "log-injection", "manual"], + ["go.uber.org/zap", "SugaredLogger", true, "Fatal", "", "", "Argument[0]", "log-injection", "manual"], + ["go.uber.org/zap", "SugaredLogger", true, "Fatalf", "", "", "Argument[0..1]", "log-injection", "manual"], + ["go.uber.org/zap", "SugaredLogger", true, "Fatalw", "", "", "Argument[0..1]", "log-injection", "manual"], + ["go.uber.org/zap", "SugaredLogger", true, "Info", "", "", "Argument[0]", "log-injection", "manual"], + ["go.uber.org/zap", "SugaredLogger", true, "Infof", "", "", "Argument[0..1]", "log-injection", "manual"], + ["go.uber.org/zap", "SugaredLogger", true, "Infow", "", "", "Argument[0..1]", "log-injection", "manual"], + ["go.uber.org/zap", "SugaredLogger", true, "Named", "", "", "Argument[0]", "log-injection", "manual"], + ["go.uber.org/zap", "SugaredLogger", true, "Panic", "", "", "Argument[0]", "log-injection", "manual"], + ["go.uber.org/zap", "SugaredLogger", true, "Panicf", "", "", "Argument[0..1]", "log-injection", "manual"], + ["go.uber.org/zap", "SugaredLogger", true, "Panicw", "", "", "Argument[0..1]", "log-injection", "manual"], + ["go.uber.org/zap", "SugaredLogger", true, "Warn", "", "", "Argument[0]", "log-injection", "manual"], + ["go.uber.org/zap", "SugaredLogger", true, "Warnf", "", "", "Argument[0..1]", "log-injection", "manual"], + ["go.uber.org/zap", "SugaredLogger", true, "Warnw", "", "", "Argument[0..1]", "log-injection", "manual"], + ["go.uber.org/zap", "SugaredLogger", true, "With", "", "", "Argument[0]", "log-injection", "manual"] + ] + }, + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "summaryModel" + }, + "data": [ + ["go.uber.org/zap", "", false, "Any", "", "", "Argument[0..1]", "ReturnValue", "taint", "manual"], + ["go.uber.org/zap", "", false, "Binary", "", "", "Argument[0..1]", "ReturnValue", "taint", "manual"], + ["go.uber.org/zap", "", false, "ByteString", "", "", "Argument[0..1]", "ReturnValue", "taint", "manual"], + ["go.uber.org/zap", "", false, "ByteStrings", "", "", "Argument[0..1]", "ReturnValue", "taint", "manual"], + ["go.uber.org/zap", "", false, "Error", "", "", "Argument[0]", "ReturnValue", "taint", "manual"], + ["go.uber.org/zap", "", false, "Errors", "", "", "Argument[0..1]", "ReturnValue", "taint", "manual"], + ["go.uber.org/zap", "", false, "NamedError", "", "", "Argument[0..1]", "ReturnValue", "taint", "manual"], + ["go.uber.org/zap", "", false, "Reflect", "", "", "Argument[0..1]", "ReturnValue", "taint", "manual"], + ["go.uber.org/zap", "", false, "String", "", "", "Argument[0..1]", "ReturnValue", "taint", "manual"], + ["go.uber.org/zap", "", false, "Stringp", "", "", "Argument[0..1]", "ReturnValue", "taint", "manual"], + ["go.uber.org/zap", "", false, "Strings", "", "", "Argument[0..1]", "ReturnValue", "taint", "manual"] + ] + } + ] +} diff --git a/go/ql/lib/ext/go.uber.org.zap.model.yml b/go/ql/lib/ext/go.uber.org.zap.model.yml deleted file mode 100644 index e9fc971e5fa2..000000000000 --- a/go/ql/lib/ext/go.uber.org.zap.model.yml +++ /dev/null @@ -1,53 +0,0 @@ -extensions: - - addsTo: - pack: codeql/go-all - extensible: sinkModel - data: - - ["go.uber.org/zap", "Logger", True, "DPanic", "", "", "Argument[0..1]", "log-injection", "manual"] - - ["go.uber.org/zap", "Logger", True, "Debug", "", "", "Argument[0..1]", "log-injection", "manual"] - - ["go.uber.org/zap", "Logger", True, "Error", "", "", "Argument[0..1]", "log-injection", "manual"] - - ["go.uber.org/zap", "Logger", True, "Fatal", "", "", "Argument[0..1]", "log-injection", "manual"] - - ["go.uber.org/zap", "Logger", True, "Info", "", "", "Argument[0..1]", "log-injection", "manual"] - - ["go.uber.org/zap", "Logger", True, "Named", "", "", "Argument[0]", "log-injection", "manual"] - - ["go.uber.org/zap", "Logger", True, "Panic", "", "", "Argument[0..1]", "log-injection", "manual"] - - ["go.uber.org/zap", "Logger", True, "Warn", "", "", "Argument[0..1]", "log-injection", "manual"] - - ["go.uber.org/zap", "Logger", True, "With", "", "", "Argument[0]", "log-injection", "manual"] - - ["go.uber.org/zap", "Logger", True, "WithOptions", "", "", "Argument[0]", "log-injection", "manual"] - - ["go.uber.org/zap", "SugaredLogger", True, "DPanic", "", "", "Argument[0]", "log-injection", "manual"] - - ["go.uber.org/zap", "SugaredLogger", True, "DPanicf", "", "", "Argument[0..1]", "log-injection", "manual"] - - ["go.uber.org/zap", "SugaredLogger", True, "DPanicw", "", "", "Argument[0..1]", "log-injection", "manual"] - - ["go.uber.org/zap", "SugaredLogger", True, "Debug", "", "", "Argument[0]", "log-injection", "manual"] - - ["go.uber.org/zap", "SugaredLogger", True, "Debugf", "", "", "Argument[0..1]", "log-injection", "manual"] - - ["go.uber.org/zap", "SugaredLogger", True, "Debugw", "", "", "Argument[0..1]", "log-injection", "manual"] - - ["go.uber.org/zap", "SugaredLogger", True, "Error", "", "", "Argument[0]", "log-injection", "manual"] - - ["go.uber.org/zap", "SugaredLogger", True, "Errorf", "", "", "Argument[0..1]", "log-injection", "manual"] - - ["go.uber.org/zap", "SugaredLogger", True, "Errorw", "", "", "Argument[0..1]", "log-injection", "manual"] - - ["go.uber.org/zap", "SugaredLogger", True, "Fatal", "", "", "Argument[0]", "log-injection", "manual"] - - ["go.uber.org/zap", "SugaredLogger", True, "Fatalf", "", "", "Argument[0..1]", "log-injection", "manual"] - - ["go.uber.org/zap", "SugaredLogger", True, "Fatalw", "", "", "Argument[0..1]", "log-injection", "manual"] - - ["go.uber.org/zap", "SugaredLogger", True, "Info", "", "", "Argument[0]", "log-injection", "manual"] - - ["go.uber.org/zap", "SugaredLogger", True, "Infof", "", "", "Argument[0..1]", "log-injection", "manual"] - - ["go.uber.org/zap", "SugaredLogger", True, "Infow", "", "", "Argument[0..1]", "log-injection", "manual"] - - ["go.uber.org/zap", "SugaredLogger", True, "Named", "", "", "Argument[0]", "log-injection", "manual"] - - ["go.uber.org/zap", "SugaredLogger", True, "Panic", "", "", "Argument[0]", "log-injection", "manual"] - - ["go.uber.org/zap", "SugaredLogger", True, "Panicf", "", "", "Argument[0..1]", "log-injection", "manual"] - - ["go.uber.org/zap", "SugaredLogger", True, "Panicw", "", "", "Argument[0..1]", "log-injection", "manual"] - - ["go.uber.org/zap", "SugaredLogger", True, "Warn", "", "", "Argument[0]", "log-injection", "manual"] - - ["go.uber.org/zap", "SugaredLogger", True, "Warnf", "", "", "Argument[0..1]", "log-injection", "manual"] - - ["go.uber.org/zap", "SugaredLogger", True, "Warnw", "", "", "Argument[0..1]", "log-injection", "manual"] - - ["go.uber.org/zap", "SugaredLogger", True, "With", "", "", "Argument[0]", "log-injection", "manual"] - - addsTo: - pack: codeql/go-all - extensible: summaryModel - data: - - ["go.uber.org/zap", "", False, "Any", "", "", "Argument[0..1]", "ReturnValue", "taint", "manual"] - - ["go.uber.org/zap", "", False, "Binary", "", "", "Argument[0..1]", "ReturnValue", "taint", "manual"] - - ["go.uber.org/zap", "", False, "ByteString", "", "", "Argument[0..1]", "ReturnValue", "taint", "manual"] - - ["go.uber.org/zap", "", False, "ByteStrings", "", "", "Argument[0..1]", "ReturnValue", "taint", "manual"] - - ["go.uber.org/zap", "", False, "Error", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] - - ["go.uber.org/zap", "", False, "Errors", "", "", "Argument[0..1]", "ReturnValue", "taint", "manual"] - - ["go.uber.org/zap", "", False, "NamedError", "", "", "Argument[0..1]", "ReturnValue", "taint", "manual"] - - ["go.uber.org/zap", "", False, "Reflect", "", "", "Argument[0..1]", "ReturnValue", "taint", "manual"] - - ["go.uber.org/zap", "", False, "String", "", "", "Argument[0..1]", "ReturnValue", "taint", "manual"] - - ["go.uber.org/zap", "", False, "Stringp", "", "", "Argument[0..1]", "ReturnValue", "taint", "manual"] - - ["go.uber.org/zap", "", False, "Strings", "", "", "Argument[0..1]", "ReturnValue", "taint", "manual"] diff --git a/go/ql/lib/ext/golang.org.x.crypto.ssh.model.json b/go/ql/lib/ext/golang.org.x.crypto.ssh.model.json new file mode 100644 index 000000000000..29d348b8eeab --- /dev/null +++ b/go/ql/lib/ext/golang.org.x.crypto.ssh.model.json @@ -0,0 +1,16 @@ +{ + "extensions": [ + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "sinkModel" + }, + "data": [ + ["golang.org/x/crypto/ssh", "Session", true, "CombinedOutput", "", "", "Argument[0]", "command-injection", "manual"], + ["golang.org/x/crypto/ssh", "Session", true, "Output", "", "", "Argument[0]", "command-injection", "manual"], + ["golang.org/x/crypto/ssh", "Session", true, "Run", "", "", "Argument[0]", "command-injection", "manual"], + ["golang.org/x/crypto/ssh", "Session", true, "Start", "", "", "Argument[0]", "command-injection", "manual"] + ] + } + ] +} diff --git a/go/ql/lib/ext/golang.org.x.crypto.ssh.model.yml b/go/ql/lib/ext/golang.org.x.crypto.ssh.model.yml deleted file mode 100644 index 205a2a1dcb57..000000000000 --- a/go/ql/lib/ext/golang.org.x.crypto.ssh.model.yml +++ /dev/null @@ -1,9 +0,0 @@ -extensions: - - addsTo: - pack: codeql/go-all - extensible: sinkModel - data: - - ["golang.org/x/crypto/ssh", "Session", True, "CombinedOutput", "", "", "Argument[0]", "command-injection", "manual"] - - ["golang.org/x/crypto/ssh", "Session", True, "Output", "", "", "Argument[0]", "command-injection", "manual"] - - ["golang.org/x/crypto/ssh", "Session", True, "Run", "", "", "Argument[0]", "command-injection", "manual"] - - ["golang.org/x/crypto/ssh", "Session", True, "Start", "", "", "Argument[0]", "command-injection", "manual"] diff --git a/go/ql/lib/ext/golang.org.x.net.context.model.json b/go/ql/lib/ext/golang.org.x.net.context.model.json new file mode 100644 index 000000000000..fc0a70a01282 --- /dev/null +++ b/go/ql/lib/ext/golang.org.x.net.context.model.json @@ -0,0 +1,17 @@ +{ + "extensions": [ + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "summaryModel" + }, + "data": [ + ["golang.org/x/net/context", "", false, "WithCancel", "", "", "Argument[0]", "ReturnValue[0]", "taint", "manual"], + ["golang.org/x/net/context", "", false, "WithDeadline", "", "", "Argument[0]", "ReturnValue[0]", "taint", "manual"], + ["golang.org/x/net/context", "", false, "WithTimeout", "", "", "Argument[0]", "ReturnValue[0]", "taint", "manual"], + ["golang.org/x/net/context", "", false, "WithValue", "", "", "Argument[0..2]", "ReturnValue", "taint", "manual"], + ["golang.org/x/net/context", "Context", true, "Value", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] + ] + } + ] +} diff --git a/go/ql/lib/ext/golang.org.x.net.context.model.yml b/go/ql/lib/ext/golang.org.x.net.context.model.yml deleted file mode 100644 index 873de75761fb..000000000000 --- a/go/ql/lib/ext/golang.org.x.net.context.model.yml +++ /dev/null @@ -1,10 +0,0 @@ -extensions: - - addsTo: - pack: codeql/go-all - extensible: summaryModel - data: - - ["golang.org/x/net/context", "", False, "WithCancel", "", "", "Argument[0]", "ReturnValue[0]", "taint", "manual"] - - ["golang.org/x/net/context", "", False, "WithDeadline", "", "", "Argument[0]", "ReturnValue[0]", "taint", "manual"] - - ["golang.org/x/net/context", "", False, "WithTimeout", "", "", "Argument[0]", "ReturnValue[0]", "taint", "manual"] - - ["golang.org/x/net/context", "", False, "WithValue", "", "", "Argument[0..2]", "ReturnValue", "taint", "manual"] - - ["golang.org/x/net/context", "Context", True, "Value", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] diff --git a/go/ql/lib/ext/golang.org.x.net.html.model.json b/go/ql/lib/ext/golang.org.x.net.html.model.json new file mode 100644 index 000000000000..d3756563200f --- /dev/null +++ b/go/ql/lib/ext/golang.org.x.net.html.model.json @@ -0,0 +1,28 @@ +{ + "extensions": [ + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "summaryModel" + }, + "data": [ + ["golang.org/x/net/html", "", false, "EscapeString", "", "", "Argument[0]", "ReturnValue", "taint", "manual"], + ["golang.org/x/net/html", "", false, "NewTokenizer", "", "", "Argument[0]", "ReturnValue", "taint", "manual"], + ["golang.org/x/net/html", "", false, "NewTokenizerFragment", "", "", "Argument[0]", "ReturnValue", "taint", "manual"], + ["golang.org/x/net/html", "", false, "Parse", "", "", "Argument[0]", "ReturnValue[0]", "taint", "manual"], + ["golang.org/x/net/html", "", false, "ParseFragment", "", "", "Argument[0]", "ReturnValue[0]", "taint", "manual"], + ["golang.org/x/net/html", "", false, "ParseFragmentWithOptions", "", "", "Argument[0]", "ReturnValue[0]", "taint", "manual"], + ["golang.org/x/net/html", "", false, "ParseWithOptions", "", "", "Argument[0]", "ReturnValue[0]", "taint", "manual"], + ["golang.org/x/net/html", "", false, "Render", "", "", "Argument[1]", "Argument[0]", "taint", "manual"], + ["golang.org/x/net/html", "", false, "UnescapeString", "", "", "Argument[0]", "ReturnValue", "taint", "manual"], + ["golang.org/x/net/html", "Node", true, "AppendChild", "", "", "Argument[0]", "Argument[receiver]", "taint", "manual"], + ["golang.org/x/net/html", "Node", true, "InsertBefore", "", "", "Argument[0]", "Argument[receiver]", "taint", "manual"], + ["golang.org/x/net/html", "Tokenizer", true, "Buffered", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"], + ["golang.org/x/net/html", "Tokenizer", true, "Raw", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"], + ["golang.org/x/net/html", "Tokenizer", true, "TagAttr", "", "", "Argument[receiver]", "ReturnValue[1]", "taint", "manual"], + ["golang.org/x/net/html", "Tokenizer", true, "Text", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"], + ["golang.org/x/net/html", "Tokenizer", true, "Token", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] + ] + } + ] +} diff --git a/go/ql/lib/ext/golang.org.x.net.html.model.yml b/go/ql/lib/ext/golang.org.x.net.html.model.yml deleted file mode 100644 index 5633e8b3b408..000000000000 --- a/go/ql/lib/ext/golang.org.x.net.html.model.yml +++ /dev/null @@ -1,21 +0,0 @@ -extensions: - - addsTo: - pack: codeql/go-all - extensible: summaryModel - data: - - ["golang.org/x/net/html", "", False, "EscapeString", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] - - ["golang.org/x/net/html", "", False, "NewTokenizer", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] - - ["golang.org/x/net/html", "", False, "NewTokenizerFragment", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] - - ["golang.org/x/net/html", "", False, "Parse", "", "", "Argument[0]", "ReturnValue[0]", "taint", "manual"] - - ["golang.org/x/net/html", "", False, "ParseFragment", "", "", "Argument[0]", "ReturnValue[0]", "taint", "manual"] - - ["golang.org/x/net/html", "", False, "ParseFragmentWithOptions", "", "", "Argument[0]", "ReturnValue[0]", "taint", "manual"] - - ["golang.org/x/net/html", "", False, "ParseWithOptions", "", "", "Argument[0]", "ReturnValue[0]", "taint", "manual"] - - ["golang.org/x/net/html", "", False, "Render", "", "", "Argument[1]", "Argument[0]", "taint", "manual"] - - ["golang.org/x/net/html", "", False, "UnescapeString", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] - - ["golang.org/x/net/html", "Node", True, "AppendChild", "", "", "Argument[0]", "Argument[receiver]", "taint", "manual"] - - ["golang.org/x/net/html", "Node", True, "InsertBefore", "", "", "Argument[0]", "Argument[receiver]", "taint", "manual"] - - ["golang.org/x/net/html", "Tokenizer", True, "Buffered", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] - - ["golang.org/x/net/html", "Tokenizer", True, "Raw", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] - - ["golang.org/x/net/html", "Tokenizer", True, "TagAttr", "", "", "Argument[receiver]", "ReturnValue[1]", "taint", "manual"] - - ["golang.org/x/net/html", "Tokenizer", True, "Text", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] - - ["golang.org/x/net/html", "Tokenizer", True, "Token", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] diff --git a/go/ql/lib/ext/golang.org.x.net.websocket.model.json b/go/ql/lib/ext/golang.org.x.net.websocket.model.json new file mode 100644 index 000000000000..1374c04a935c --- /dev/null +++ b/go/ql/lib/ext/golang.org.x.net.websocket.model.json @@ -0,0 +1,14 @@ +{ + "extensions": [ + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "sourceModel" + }, + "data": [ + ["golang.org/x/net/websocket", "Codec", true, "Receive", "", "", "Argument[1]", "remote", "manual"], + ["golang.org/x/net/websocket", "Conn", true, "Read", "", "", "Argument[0]", "remote", "manual"] + ] + } + ] +} diff --git a/go/ql/lib/ext/golang.org.x.net.websocket.model.yml b/go/ql/lib/ext/golang.org.x.net.websocket.model.yml deleted file mode 100644 index 422d74248a59..000000000000 --- a/go/ql/lib/ext/golang.org.x.net.websocket.model.yml +++ /dev/null @@ -1,7 +0,0 @@ -extensions: - - addsTo: - pack: codeql/go-all - extensible: sourceModel - data: - - ["golang.org/x/net/websocket", "Codec", True, "Receive", "", "", "Argument[1]", "remote", "manual"] - - ["golang.org/x/net/websocket", "Conn", True, "Read", "", "", "Argument[0]", "remote", "manual"] diff --git a/go/ql/lib/ext/google.golang.org.protobuf.internal.encoding.text.model.json b/go/ql/lib/ext/google.golang.org.protobuf.internal.encoding.text.model.json new file mode 100644 index 000000000000..0a79d995e5bf --- /dev/null +++ b/go/ql/lib/ext/google.golang.org.protobuf.internal.encoding.text.model.json @@ -0,0 +1,13 @@ +{ + "extensions": [ + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "summaryModel" + }, + "data": [ + ["google.golang.org/protobuf/internal/encoding/text", "Token", true, "String", "", "", "Argument[receiver]", "ReturnValue[0]", "taint", "manual"] + ] + } + ] +} diff --git a/go/ql/lib/ext/google.golang.org.protobuf.internal.encoding.text.model.yml b/go/ql/lib/ext/google.golang.org.protobuf.internal.encoding.text.model.yml deleted file mode 100644 index e0808239e562..000000000000 --- a/go/ql/lib/ext/google.golang.org.protobuf.internal.encoding.text.model.yml +++ /dev/null @@ -1,6 +0,0 @@ -extensions: - - addsTo: - pack: codeql/go-all - extensible: summaryModel - data: - - ["google.golang.org/protobuf/internal/encoding/text", "Token", True, "String", "", "", "Argument[receiver]", "ReturnValue[0]", "taint", "manual"] diff --git a/go/ql/lib/ext/google.golang.org.protobuf.internal.impl.model.json b/go/ql/lib/ext/google.golang.org.protobuf.internal.impl.model.json new file mode 100644 index 000000000000..74f1a6f7fd49 --- /dev/null +++ b/go/ql/lib/ext/google.golang.org.protobuf.internal.impl.model.json @@ -0,0 +1,14 @@ +{ + "extensions": [ + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "summaryModel" + }, + "data": [ + ["google.golang.org/protobuf/internal/impl", "aberrantMessage", true, "Get", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"], + ["google.golang.org/protobuf/internal/impl", "aberrantMessage", true, "GetUnknown", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] + ] + } + ] +} diff --git a/go/ql/lib/ext/google.golang.org.protobuf.internal.impl.model.yml b/go/ql/lib/ext/google.golang.org.protobuf.internal.impl.model.yml deleted file mode 100644 index 487e1c923590..000000000000 --- a/go/ql/lib/ext/google.golang.org.protobuf.internal.impl.model.yml +++ /dev/null @@ -1,7 +0,0 @@ -extensions: - - addsTo: - pack: codeql/go-all - extensible: summaryModel - data: - - ["google.golang.org/protobuf/internal/impl", "aberrantMessage", True, "Get", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] - - ["google.golang.org/protobuf/internal/impl", "aberrantMessage", True, "GetUnknown", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] diff --git a/go/ql/lib/ext/google.golang.org.protobuf.proto.model.json b/go/ql/lib/ext/google.golang.org.protobuf.proto.model.json new file mode 100644 index 000000000000..87d35416cbbd --- /dev/null +++ b/go/ql/lib/ext/google.golang.org.protobuf.proto.model.json @@ -0,0 +1,20 @@ +{ + "extensions": [ + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "summaryModel" + }, + "data": [ + ["google.golang.org/protobuf/proto", "", false, "Clone", "", "", "Argument[0]", "ReturnValue", "taint", "manual"], + ["google.golang.org/protobuf/proto", "", false, "Marshal", "", "", "Argument[0]", "ReturnValue[0]", "taint", "manual"], + ["google.golang.org/protobuf/proto", "", false, "Merge", "", "", "Argument[1]", "Argument[0]", "taint", "manual"], + ["google.golang.org/protobuf/proto", "", false, "Unmarshal", "", "", "Argument[0]", "Argument[1]", "taint", "manual"], + ["google.golang.org/protobuf/proto", "MarshalOptions", true, "Marshal", "", "", "Argument[0]", "ReturnValue[0]", "taint", "manual"], + ["google.golang.org/protobuf/proto", "MarshalOptions", true, "MarshalAppend", "", "", "Argument[1]", "Argument[0]", "taint", "manual"], + ["google.golang.org/protobuf/proto", "MarshalOptions", true, "MarshalAppend", "", "", "Argument[1]", "ReturnValue[0]", "taint", "manual"], + ["google.golang.org/protobuf/proto", "UnmarshalOptions", true, "Unmarshal", "", "", "Argument[0]", "Argument[1]", "taint", "manual"] + ] + } + ] +} diff --git a/go/ql/lib/ext/google.golang.org.protobuf.proto.model.yml b/go/ql/lib/ext/google.golang.org.protobuf.proto.model.yml deleted file mode 100644 index 988559372565..000000000000 --- a/go/ql/lib/ext/google.golang.org.protobuf.proto.model.yml +++ /dev/null @@ -1,13 +0,0 @@ -extensions: - - addsTo: - pack: codeql/go-all - extensible: summaryModel - data: - - ["google.golang.org/protobuf/proto", "", False, "Clone", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] - - ["google.golang.org/protobuf/proto", "", False, "Marshal", "", "", "Argument[0]", "ReturnValue[0]", "taint", "manual"] - - ["google.golang.org/protobuf/proto", "", False, "Merge", "", "", "Argument[1]", "Argument[0]", "taint", "manual"] - - ["google.golang.org/protobuf/proto", "", False, "Unmarshal", "", "", "Argument[0]", "Argument[1]", "taint", "manual"] - - ["google.golang.org/protobuf/proto", "MarshalOptions", True, "Marshal", "", "", "Argument[0]", "ReturnValue[0]", "taint", "manual"] - - ["google.golang.org/protobuf/proto", "MarshalOptions", True, "MarshalAppend", "", "", "Argument[1]", "Argument[0]", "taint", "manual"] - - ["google.golang.org/protobuf/proto", "MarshalOptions", True, "MarshalAppend", "", "", "Argument[1]", "ReturnValue[0]", "taint", "manual"] - - ["google.golang.org/protobuf/proto", "UnmarshalOptions", True, "Unmarshal", "", "", "Argument[0]", "Argument[1]", "taint", "manual"] diff --git a/go/ql/lib/ext/google.golang.org.protobuf.reflect.protoreflect.model.json b/go/ql/lib/ext/google.golang.org.protobuf.reflect.protoreflect.model.json new file mode 100644 index 000000000000..8ad3c86c06ed --- /dev/null +++ b/go/ql/lib/ext/google.golang.org.protobuf.reflect.protoreflect.model.json @@ -0,0 +1,13 @@ +{ + "extensions": [ + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "summaryModel" + }, + "data": [ + ["google.golang.org/protobuf/reflect/protoreflect", "ProtoMessage", true, "ProtoReflect", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] + ] + } + ] +} diff --git a/go/ql/lib/ext/google.golang.org.protobuf.reflect.protoreflect.model.yml b/go/ql/lib/ext/google.golang.org.protobuf.reflect.protoreflect.model.yml deleted file mode 100644 index d53a9016b8da..000000000000 --- a/go/ql/lib/ext/google.golang.org.protobuf.reflect.protoreflect.model.yml +++ /dev/null @@ -1,6 +0,0 @@ -extensions: - - addsTo: - pack: codeql/go-all - extensible: summaryModel - data: - - ["google.golang.org/protobuf/reflect/protoreflect", "ProtoMessage", True, "ProtoReflect", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] diff --git a/go/ql/lib/ext/gopkg.in.macaron.model.json b/go/ql/lib/ext/gopkg.in.macaron.model.json new file mode 100644 index 000000000000..26216b864236 --- /dev/null +++ b/go/ql/lib/ext/gopkg.in.macaron.model.json @@ -0,0 +1,42 @@ +{ + "extensions": [ + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "sinkModel" + }, + "data": [ + ["gopkg.in/macaron", "Context", true, "Redirect", "", "", "Argument[0]", "url-redirection[receiver]", "manual"] + ] + }, + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "sourceModel" + }, + "data": [ + ["gopkg.in/macaron", "Context", true, "AllParams", "", "", "ReturnValue", "remote", "manual"], + ["gopkg.in/macaron", "Context", true, "GetCookie", "", "", "ReturnValue", "remote", "manual"], + ["gopkg.in/macaron", "Context", true, "GetSecureCookie", "", "", "ReturnValue[0]", "remote", "manual"], + ["gopkg.in/macaron", "Context", true, "GetSuperSecureCookie", "", "", "ReturnValue[0]", "remote", "manual"], + ["gopkg.in/macaron", "Context", true, "GetFile", "", "", "ReturnValue[0]", "remote", "manual"], + ["gopkg.in/macaron", "Context", true, "Params", "", "", "ReturnValue", "remote", "manual"], + ["gopkg.in/macaron", "Context", true, "ParamsEscape", "", "", "ReturnValue", "remote", "manual"], + ["gopkg.in/macaron", "Context", true, "Query", "", "", "ReturnValue", "remote", "manual"], + ["gopkg.in/macaron", "Context", true, "QueryEscape", "", "", "ReturnValue", "remote", "manual"], + ["gopkg.in/macaron", "Context", true, "QueryStrings", "", "", "ReturnValue", "remote", "manual"], + ["gopkg.in/macaron", "RequestBody", true, "Bytes", "", "", "ReturnValue[0]", "remote", "manual"], + ["gopkg.in/macaron", "RequestBody", true, "String", "", "", "ReturnValue[0]", "remote", "manual"] + ] + }, + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "summaryModel" + }, + "data": [ + ["gopkg.in/macaron", "RequestBody", true, "String", "", "", "Argument[receiver]", "ReturnValue[0]", "taint", "manual"] + ] + } + ] +} diff --git a/go/ql/lib/ext/gopkg.in.macaron.model.yml b/go/ql/lib/ext/gopkg.in.macaron.model.yml deleted file mode 100644 index d0c0a82a462a..000000000000 --- a/go/ql/lib/ext/gopkg.in.macaron.model.yml +++ /dev/null @@ -1,27 +0,0 @@ -extensions: - - addsTo: - pack: codeql/go-all - extensible: sinkModel - data: - - ["gopkg.in/macaron", "Context", True, "Redirect", "", "", "Argument[0]", "url-redirection[receiver]", "manual"] - - addsTo: - pack: codeql/go-all - extensible: sourceModel - data: - - ["gopkg.in/macaron", "Context", True, "AllParams", "", "", "ReturnValue", "remote", "manual"] - - ["gopkg.in/macaron", "Context", True, "GetCookie", "", "", "ReturnValue", "remote", "manual"] - - ["gopkg.in/macaron", "Context", True, "GetSecureCookie", "", "", "ReturnValue[0]", "remote", "manual"] - - ["gopkg.in/macaron", "Context", True, "GetSuperSecureCookie", "", "", "ReturnValue[0]", "remote", "manual"] - - ["gopkg.in/macaron", "Context", True, "GetFile", "", "", "ReturnValue[0]", "remote", "manual"] - - ["gopkg.in/macaron", "Context", True, "Params", "", "", "ReturnValue", "remote", "manual"] - - ["gopkg.in/macaron", "Context", True, "ParamsEscape", "", "", "ReturnValue", "remote", "manual"] - - ["gopkg.in/macaron", "Context", True, "Query", "", "", "ReturnValue", "remote", "manual"] - - ["gopkg.in/macaron", "Context", True, "QueryEscape", "", "", "ReturnValue", "remote", "manual"] - - ["gopkg.in/macaron", "Context", True, "QueryStrings", "", "", "ReturnValue", "remote", "manual"] - - ["gopkg.in/macaron", "RequestBody", True, "Bytes", "", "", "ReturnValue[0]", "remote", "manual"] - - ["gopkg.in/macaron", "RequestBody", True, "String", "", "", "ReturnValue[0]", "remote", "manual"] - - addsTo: - pack: codeql/go-all - extensible: summaryModel - data: - - ["gopkg.in/macaron", "RequestBody", True, "String", "", "", "Argument[receiver]", "ReturnValue[0]", "taint", "manual"] diff --git a/go/ql/lib/ext/gopkg.in.yaml.model.json b/go/ql/lib/ext/gopkg.in.yaml.model.json new file mode 100644 index 000000000000..8cccafcbf277 --- /dev/null +++ b/go/ql/lib/ext/gopkg.in.yaml.model.json @@ -0,0 +1,21 @@ +{ + "extensions": [ + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "summaryModel" + }, + "data": [ + ["gopkg.in/yaml", "", false, "Marshal", "", "", "Argument[0]", "ReturnValue[0]", "taint", "manual"], + ["gopkg.in/yaml", "", false, "Unmarshal", "", "", "Argument[0]", "Argument[1]", "taint", "manual"], + ["gopkg.in/yaml", "", false, "UnmarshalStrict", "", "", "Argument[0]", "Argument[1]", "taint", "manual"], + ["gopkg.in/yaml", "", false, "NewDecoder", "", "", "Argument[0]", "ReturnValue", "taint", "manual"], + ["gopkg.in/yaml", "Decoder", true, "Decode", "", "", "Argument[receiver]", "Argument[0]", "taint", "manual"], + ["gopkg.in/yaml", "Encoder", true, "Encode", "", "", "Argument[0]", "Argument[receiver]", "taint", "manual"], + ["gopkg.in/yaml", "Node", true, "Decode", "", "", "Argument[receiver]", "Argument[0]", "taint", "manual"], + ["gopkg.in/yaml", "Node", true, "Encode", "", "", "Argument[0]", "Argument[receiver]", "taint", "manual"], + ["gopkg.in/yaml", "Node", true, "SetString", "", "", "Argument[0]", "Argument[receiver]", "taint", "manual"] + ] + } + ] +} diff --git a/go/ql/lib/ext/gopkg.in.yaml.model.yml b/go/ql/lib/ext/gopkg.in.yaml.model.yml deleted file mode 100644 index 34b973e67198..000000000000 --- a/go/ql/lib/ext/gopkg.in.yaml.model.yml +++ /dev/null @@ -1,14 +0,0 @@ -extensions: - - addsTo: - pack: codeql/go-all - extensible: summaryModel - data: - - ["gopkg.in/yaml", "", False, "Marshal", "", "", "Argument[0]", "ReturnValue[0]", "taint", "manual"] - - ["gopkg.in/yaml", "", False, "Unmarshal", "", "", "Argument[0]", "Argument[1]", "taint", "manual"] - - ["gopkg.in/yaml", "", False, "UnmarshalStrict", "", "", "Argument[0]", "Argument[1]", "taint", "manual"] - - ["gopkg.in/yaml", "", False, "NewDecoder", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] - - ["gopkg.in/yaml", "Decoder", True, "Decode", "", "", "Argument[receiver]", "Argument[0]", "taint", "manual"] - - ["gopkg.in/yaml", "Encoder", True, "Encode", "", "", "Argument[0]", "Argument[receiver]", "taint", "manual"] - - ["gopkg.in/yaml", "Node", True, "Decode", "", "", "Argument[receiver]", "Argument[0]", "taint", "manual"] - - ["gopkg.in/yaml", "Node", True, "Encode", "", "", "Argument[0]", "Argument[receiver]", "taint", "manual"] - - ["gopkg.in/yaml", "Node", True, "SetString", "", "", "Argument[0]", "Argument[receiver]", "taint", "manual"] diff --git a/go/ql/lib/ext/gorm.io.gorm.model.json b/go/ql/lib/ext/gorm.io.gorm.model.json new file mode 100644 index 000000000000..d3a67848d4dd --- /dev/null +++ b/go/ql/lib/ext/gorm.io.gorm.model.json @@ -0,0 +1,68 @@ +{ + "extensions": [ + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "packageGrouping" + }, + "data": [ + ["gorm", "gorm.io/gorm"], + ["gorm", "github.com/jinzhu/gorm"], + ["gorm", "github.com/go-gorm/gorm"] + ] + }, + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "sourceModel" + }, + "data": [ + ["group:gorm", "Association", true, "Find", "", "", "Argument[0]", "database", "manual"], + ["group:gorm", "ConnPool", true, "QueryContext", "", "", "ReturnValue[0]", "database", "manual"], + ["group:gorm", "ConnPool", true, "QueryRowContext", "", "", "ReturnValue", "database", "manual"], + ["group:gorm", "DB", true, "Find", "", "", "Argument[0]", "database", "manual"], + ["group:gorm", "DB", true, "FindInBatches", "", "", "Argument[0]", "database", "manual"], + ["group:gorm", "DB", true, "First", "", "", "Argument[0]", "database", "manual"], + ["group:gorm", "DB", true, "FirstOrCreate", "", "", "Argument[0]", "database", "manual"], + ["group:gorm", "DB", true, "FirstOrInit", "", "", "Argument[0]", "database", "manual"], + ["group:gorm", "DB", true, "Last", "", "", "Argument[0]", "database", "manual"], + ["group:gorm", "DB", true, "Model", "", "", "Argument[0]", "database", "manual"], + ["group:gorm", "DB", true, "Pluck", "", "", "Argument[1]", "database", "manual"], + ["group:gorm", "DB", true, "Row", "", "", "ReturnValue", "database", "manual"], + ["group:gorm", "DB", true, "Rows", "", "", "ReturnValue[0]", "database", "manual"], + ["group:gorm", "DB", true, "Scan", "", "", "Argument[0]", "database", "manual"], + ["group:gorm", "DB", true, "Take", "", "", "Argument[0]", "database", "manual"] + ] + }, + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "sinkModel" + }, + "data": [ + ["group:gorm", "DB", true, "Where", "", "", "Argument[0]", "sql-injection", "manual"], + ["group:gorm", "DB", true, "Raw", "", "", "Argument[0]", "sql-injection", "manual"], + ["group:gorm", "DB", true, "Order", "", "", "Argument[0]", "sql-injection", "manual"], + ["group:gorm", "DB", true, "Not", "", "", "Argument[0]", "sql-injection", "manual"], + ["group:gorm", "DB", true, "Or", "", "", "Argument[0]", "sql-injection", "manual"], + ["group:gorm", "DB", true, "Select", "", "", "Argument[0]", "sql-injection", "manual"], + ["group:gorm", "DB", true, "Table", "", "", "Argument[0]", "sql-injection", "manual"], + ["group:gorm", "DB", true, "Group", "", "", "Argument[0]", "sql-injection", "manual"], + ["group:gorm", "DB", true, "Having", "", "", "Argument[0]", "sql-injection", "manual"], + ["group:gorm", "DB", true, "Joins", "", "", "Argument[0]", "sql-injection", "manual"], + ["group:gorm", "DB", true, "Exec", "", "", "Argument[0]", "sql-injection", "manual"], + ["group:gorm", "DB", true, "Distinct", "", "", "Argument[0]", "sql-injection", "manual"], + ["group:gorm", "DB", true, "Pluck", "", "", "Argument[0]", "sql-injection", "manual"] + ] + }, + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "summaryModel" + }, + "data": [ + ["group:gorm", "DB", true, "ScanRows", "", "", "Argument[0]", "Argument[1]", "taint", "manual"] + ] + } + ] +} diff --git a/go/ql/lib/ext/gorm.io.gorm.model.yml b/go/ql/lib/ext/gorm.io.gorm.model.yml deleted file mode 100644 index 7cea07e18ff8..000000000000 --- a/go/ql/lib/ext/gorm.io.gorm.model.yml +++ /dev/null @@ -1,49 +0,0 @@ -extensions: - - addsTo: - pack: codeql/go-all - extensible: packageGrouping - data: - - ["gorm", "gorm.io/gorm"] - - ["gorm", "github.com/jinzhu/gorm"] - - ["gorm", "github.com/go-gorm/gorm"] - - addsTo: - pack: codeql/go-all - extensible: sourceModel - data: - - ["group:gorm", "Association", True, "Find", "", "", "Argument[0]", "database", "manual"] - - ["group:gorm", "ConnPool", True, "QueryContext", "", "", "ReturnValue[0]", "database", "manual"] - - ["group:gorm", "ConnPool", True, "QueryRowContext", "", "", "ReturnValue", "database", "manual"] - - ["group:gorm", "DB", True, "Find", "", "", "Argument[0]", "database", "manual"] - - ["group:gorm", "DB", True, "FindInBatches", "", "", "Argument[0]", "database", "manual"] - - ["group:gorm", "DB", True, "First", "", "", "Argument[0]", "database", "manual"] - - ["group:gorm", "DB", True, "FirstOrCreate", "", "", "Argument[0]", "database", "manual"] - - ["group:gorm", "DB", True, "FirstOrInit", "", "", "Argument[0]", "database", "manual"] - - ["group:gorm", "DB", True, "Last", "", "", "Argument[0]", "database", "manual"] - - ["group:gorm", "DB", True, "Model", "", "", "Argument[0]", "database", "manual"] - - ["group:gorm", "DB", True, "Pluck", "", "", "Argument[1]", "database", "manual"] - - ["group:gorm", "DB", True, "Row", "", "", "ReturnValue", "database", "manual"] - - ["group:gorm", "DB", True, "Rows", "", "", "ReturnValue[0]", "database", "manual"] - - ["group:gorm", "DB", True, "Scan", "", "", "Argument[0]", "database", "manual"] - - ["group:gorm", "DB", True, "Take", "", "", "Argument[0]", "database", "manual"] - - addsTo: - pack: codeql/go-all - extensible: sinkModel - data: - - ["group:gorm", "DB", True, "Where", "", "", "Argument[0]", "sql-injection", "manual"] - - ["group:gorm", "DB", True, "Raw", "", "", "Argument[0]", "sql-injection", "manual"] - - ["group:gorm", "DB", True, "Order", "", "", "Argument[0]", "sql-injection", "manual"] - - ["group:gorm", "DB", True, "Not", "", "", "Argument[0]", "sql-injection", "manual"] - - ["group:gorm", "DB", True, "Or", "", "", "Argument[0]", "sql-injection", "manual"] - - ["group:gorm", "DB", True, "Select", "", "", "Argument[0]", "sql-injection", "manual"] - - ["group:gorm", "DB", True, "Table", "", "", "Argument[0]", "sql-injection", "manual"] - - ["group:gorm", "DB", True, "Group", "", "", "Argument[0]", "sql-injection", "manual"] - - ["group:gorm", "DB", True, "Having", "", "", "Argument[0]", "sql-injection", "manual"] - - ["group:gorm", "DB", True, "Joins", "", "", "Argument[0]", "sql-injection", "manual"] - - ["group:gorm", "DB", True, "Exec", "", "", "Argument[0]", "sql-injection", "manual"] - - ["group:gorm", "DB", True, "Distinct", "", "", "Argument[0]", "sql-injection", "manual"] - - ["group:gorm", "DB", True, "Pluck", "", "", "Argument[0]", "sql-injection", "manual"] - - addsTo: - pack: codeql/go-all - extensible: summaryModel - data: - - ["group:gorm", "DB", True, "ScanRows", "", "", "Argument[0]", "Argument[1]", "taint", "manual"] diff --git a/go/ql/lib/ext/html.model.json b/go/ql/lib/ext/html.model.json new file mode 100644 index 000000000000..81e85cd55cac --- /dev/null +++ b/go/ql/lib/ext/html.model.json @@ -0,0 +1,14 @@ +{ + "extensions": [ + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "summaryModel" + }, + "data": [ + ["html", "", false, "EscapeString", "", "", "Argument[0]", "ReturnValue", "taint", "manual"], + ["html", "", false, "UnescapeString", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] + ] + } + ] +} diff --git a/go/ql/lib/ext/html.model.yml b/go/ql/lib/ext/html.model.yml deleted file mode 100644 index 24d4e70152c2..000000000000 --- a/go/ql/lib/ext/html.model.yml +++ /dev/null @@ -1,7 +0,0 @@ -extensions: - - addsTo: - pack: codeql/go-all - extensible: summaryModel - data: - - ["html", "", False, "EscapeString", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] - - ["html", "", False, "UnescapeString", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] diff --git a/go/ql/lib/ext/html.template.model.json b/go/ql/lib/ext/html.template.model.json new file mode 100644 index 000000000000..c0e00e53879f --- /dev/null +++ b/go/ql/lib/ext/html.template.model.json @@ -0,0 +1,18 @@ +{ + "extensions": [ + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "summaryModel" + }, + "data": [ + ["html/template", "", false, "HTMLEscape", "", "", "Argument[1]", "Argument[0]", "taint", "manual"], + ["html/template", "", false, "HTMLEscapeString", "", "", "Argument[0]", "ReturnValue", "taint", "manual"], + ["html/template", "", false, "JSEscape", "", "", "Argument[1]", "Argument[0]", "taint", "manual"], + ["html/template", "", false, "JSEscapeString", "", "", "Argument[0]", "ReturnValue", "taint", "manual"], + ["html/template", "Template", true, "Execute", "", "", "Argument[1]", "Argument[0]", "taint", "manual"], + ["html/template", "Template", true, "ExecuteTemplate", "", "", "Argument[2]", "Argument[0]", "taint", "manual"] + ] + } + ] +} diff --git a/go/ql/lib/ext/html.template.model.yml b/go/ql/lib/ext/html.template.model.yml deleted file mode 100644 index 0ee840c4eaed..000000000000 --- a/go/ql/lib/ext/html.template.model.yml +++ /dev/null @@ -1,11 +0,0 @@ -extensions: - - addsTo: - pack: codeql/go-all - extensible: summaryModel - data: - - ["html/template", "", False, "HTMLEscape", "", "", "Argument[1]", "Argument[0]", "taint", "manual"] - - ["html/template", "", False, "HTMLEscapeString", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] - - ["html/template", "", False, "JSEscape", "", "", "Argument[1]", "Argument[0]", "taint", "manual"] - - ["html/template", "", False, "JSEscapeString", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] - - ["html/template", "Template", True, "Execute", "", "", "Argument[1]", "Argument[0]", "taint", "manual"] - - ["html/template", "Template", True, "ExecuteTemplate", "", "", "Argument[2]", "Argument[0]", "taint", "manual"] diff --git a/go/ql/lib/ext/io.fs.model.json b/go/ql/lib/ext/io.fs.model.json new file mode 100644 index 000000000000..394b1e956a8e --- /dev/null +++ b/go/ql/lib/ext/io.fs.model.json @@ -0,0 +1,36 @@ +{ + "extensions": [ + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "summaryModel" + }, + "data": [ + ["io/fs", "", false, "FileInfoToDirEntry", "", "", "Argument[0]", "ReturnValue", "taint", "manual"], + ["io/fs", "", false, "Glob", "", "", "Argument[0]", "ReturnValue[0]", "taint", "manual"], + ["io/fs", "", false, "ReadDir", "", "", "Argument[0]", "ReturnValue[0]", "taint", "manual"], + ["io/fs", "", false, "ReadFile", "", "", "Argument[0]", "ReturnValue[0]", "taint", "manual"], + ["io/fs", "", false, "Sub", "", "", "Argument[0]", "ReturnValue[0]", "taint", "manual"], + ["io/fs", "DirEntry", true, "Info", "", "", "Argument[receiver]", "ReturnValue[0]", "taint", "manual"], + ["io/fs", "DirEntry", true, "Name", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"], + ["io/fs", "File", true, "Read", "", "", "Argument[receiver]", "Argument[0]", "taint", "manual"], + ["io/fs", "FS", true, "Open", "", "", "Argument[receiver]", "ReturnValue[0]", "taint", "manual"], + ["io/fs", "GlobFS", true, "Glob", "", "", "Argument[receiver]", "ReturnValue[0]", "taint", "manual"], + ["io/fs", "ReadDirFS", true, "ReadDir", "", "", "Argument[receiver]", "ReturnValue[0]", "taint", "manual"], + ["io/fs", "ReadFileFS", true, "ReadFile", "", "", "Argument[receiver]", "ReturnValue[0]", "taint", "manual"], + ["io/fs", "SubFS", true, "Sub", "", "", "Argument[receiver]", "ReturnValue[0]", "taint", "manual"] + ] + }, + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "sourceModel" + }, + "data": [ + ["io/fs", "", false, "ReadFile", "", "", "ReturnValue[0]", "file", "manual"], + ["io/fs", "ReadFileFS", true, "ReadFile", "", "", "ReturnValue[0]", "file", "manual"], + ["io/fs", "FS", true, "Open", "", "", "ReturnValue[0]", "file", "manual"] + ] + } + ] +} diff --git a/go/ql/lib/ext/io.fs.model.yml b/go/ql/lib/ext/io.fs.model.yml deleted file mode 100644 index 1b9be01aba91..000000000000 --- a/go/ql/lib/ext/io.fs.model.yml +++ /dev/null @@ -1,25 +0,0 @@ -extensions: - - addsTo: - pack: codeql/go-all - extensible: summaryModel - data: - - ["io/fs", "", False, "FileInfoToDirEntry", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] - - ["io/fs", "", False, "Glob", "", "", "Argument[0]", "ReturnValue[0]", "taint", "manual"] - - ["io/fs", "", False, "ReadDir", "", "", "Argument[0]", "ReturnValue[0]", "taint", "manual"] - - ["io/fs", "", False, "ReadFile", "", "", "Argument[0]", "ReturnValue[0]", "taint", "manual"] - - ["io/fs", "", False, "Sub", "", "", "Argument[0]", "ReturnValue[0]", "taint", "manual"] - - ["io/fs", "DirEntry", True, "Info", "", "", "Argument[receiver]", "ReturnValue[0]", "taint", "manual"] - - ["io/fs", "DirEntry", True, "Name", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] - - ["io/fs", "File", True, "Read", "", "", "Argument[receiver]", "Argument[0]", "taint", "manual"] - - ["io/fs", "FS", True, "Open", "", "", "Argument[receiver]", "ReturnValue[0]", "taint", "manual"] - - ["io/fs", "GlobFS", True, "Glob", "", "", "Argument[receiver]", "ReturnValue[0]", "taint", "manual"] - - ["io/fs", "ReadDirFS", True, "ReadDir", "", "", "Argument[receiver]", "ReturnValue[0]", "taint", "manual"] - - ["io/fs", "ReadFileFS", True, "ReadFile", "", "", "Argument[receiver]", "ReturnValue[0]", "taint", "manual"] - - ["io/fs", "SubFS", True, "Sub", "", "", "Argument[receiver]", "ReturnValue[0]", "taint", "manual"] - - addsTo: - pack: codeql/go-all - extensible: sourceModel - data: - - ["io/fs", "", False, "ReadFile", "", "", "ReturnValue[0]", "file", "manual"] - - ["io/fs", "ReadFileFS", True, "ReadFile", "", "", "ReturnValue[0]", "file", "manual"] - - ["io/fs", "FS", True, "Open", "", "", "ReturnValue[0]", "file", "manual"] diff --git a/go/ql/lib/ext/io.ioutil.model.json b/go/ql/lib/ext/io.ioutil.model.json new file mode 100644 index 000000000000..f6ef180fb92b --- /dev/null +++ b/go/ql/lib/ext/io.ioutil.model.json @@ -0,0 +1,36 @@ +{ + "extensions": [ + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "sinkModel" + }, + "data": [ + ["io/ioutil", "", false, "ReadDir", "", "", "Argument[0]", "path-injection", "manual"], + ["io/ioutil", "", false, "ReadFile", "", "", "Argument[0]", "path-injection", "manual"], + ["io/ioutil", "", false, "TempDir", "", "", "Argument[0..1]", "path-injection", "manual"], + ["io/ioutil", "", false, "TempFile", "", "", "Argument[0..1]", "path-injection", "manual"], + ["io/ioutil", "", false, "WriteFile", "", "", "Argument[0]", "path-injection", "manual"] + ] + }, + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "summaryModel" + }, + "data": [ + ["io/ioutil", "", false, "NopCloser", "", "", "Argument[0]", "ReturnValue", "taint", "manual"], + ["io/ioutil", "", false, "ReadAll", "", "", "Argument[0]", "ReturnValue[0]", "taint", "manual"] + ] + }, + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "sourceModel" + }, + "data": [ + ["io/ioutil", "", false, "ReadFile", "", "", "ReturnValue[0]", "file", "manual"] + ] + } + ] +} diff --git a/go/ql/lib/ext/io.ioutil.model.yml b/go/ql/lib/ext/io.ioutil.model.yml deleted file mode 100644 index d5fae77c1d4e..000000000000 --- a/go/ql/lib/ext/io.ioutil.model.yml +++ /dev/null @@ -1,21 +0,0 @@ -extensions: - - addsTo: - pack: codeql/go-all - extensible: sinkModel - data: - - ["io/ioutil", "", False, "ReadDir", "", "", "Argument[0]", "path-injection", "manual"] - - ["io/ioutil", "", False, "ReadFile", "", "", "Argument[0]", "path-injection", "manual"] - - ["io/ioutil", "", False, "TempDir", "", "", "Argument[0..1]", "path-injection", "manual"] - - ["io/ioutil", "", False, "TempFile", "", "", "Argument[0..1]", "path-injection", "manual"] - - ["io/ioutil", "", False, "WriteFile", "", "", "Argument[0]", "path-injection", "manual"] - - addsTo: - pack: codeql/go-all - extensible: summaryModel - data: - - ["io/ioutil", "", False, "NopCloser", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] - - ["io/ioutil", "", False, "ReadAll", "", "", "Argument[0]", "ReturnValue[0]", "taint", "manual"] - - addsTo: - pack: codeql/go-all - extensible: sourceModel - data: - - ["io/ioutil", "", False, "ReadFile", "", "", "ReturnValue[0]", "file", "manual"] diff --git a/go/ql/lib/ext/io.model.json b/go/ql/lib/ext/io.model.json new file mode 100644 index 000000000000..fb8159084929 --- /dev/null +++ b/go/ql/lib/ext/io.model.json @@ -0,0 +1,31 @@ +{ + "extensions": [ + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "summaryModel" + }, + "data": [ + ["io", "", false, "Copy", "", "", "Argument[1]", "Argument[0]", "taint", "manual"], + ["io", "", false, "CopyBuffer", "", "", "Argument[1]", "Argument[0]", "taint", "manual"], + ["io", "", false, "CopyN", "", "", "Argument[1]", "Argument[0]", "taint", "manual"], + ["io", "", false, "LimitReader", "", "", "Argument[0]", "ReturnValue", "taint", "manual"], + ["io", "", false, "NewSectionReader", "", "", "Argument[0]", "ReturnValue", "taint", "manual"], + ["io", "", false, "NopCloser", "", "", "Argument[0]", "ReturnValue", "taint", "manual"], + ["io", "", false, "ReadAll", "", "", "Argument[0]", "ReturnValue[0]", "taint", "manual"], + ["io", "", false, "ReadAtLeast", "", "", "Argument[0]", "Argument[1]", "taint", "manual"], + ["io", "", false, "ReadFull", "", "", "Argument[0]", "Argument[1]", "taint", "manual"], + ["io", "", false, "TeeReader", "", "", "Argument[0]", "Argument[1]", "taint", "manual"], + ["io", "", false, "TeeReader", "", "", "Argument[0]", "ReturnValue", "taint", "manual"], + ["io", "", false, "WriteString", "", "", "Argument[1]", "Argument[0]", "taint", "manual"], + ["io", "Reader", true, "Read", "", "", "Argument[receiver]", "Argument[0]", "taint", "manual"], + ["io", "ReaderAt", true, "ReadAt", "", "", "Argument[receiver]", "Argument[0]", "taint", "manual"], + ["io", "ReaderFrom", true, "ReadFrom", "", "", "Argument[0]", "Argument[receiver]", "taint", "manual"], + ["io", "StringWriter", true, "WriteString", "", "", "Argument[0]", "Argument[receiver]", "taint", "manual"], + ["io", "Writer", true, "Write", "", "", "Argument[0]", "Argument[receiver]", "taint", "manual"], + ["io", "WriterAt", true, "WriteAt", "", "", "Argument[0]", "Argument[receiver]", "taint", "manual"], + ["io", "WriterTo", true, "WriteTo", "", "", "Argument[receiver]", "Argument[0]", "taint", "manual"] + ] + } + ] +} diff --git a/go/ql/lib/ext/io.model.yml b/go/ql/lib/ext/io.model.yml deleted file mode 100644 index d9c7190026d5..000000000000 --- a/go/ql/lib/ext/io.model.yml +++ /dev/null @@ -1,24 +0,0 @@ -extensions: - - addsTo: - pack: codeql/go-all - extensible: summaryModel - data: - - ["io", "", False, "Copy", "", "", "Argument[1]", "Argument[0]", "taint", "manual"] - - ["io", "", False, "CopyBuffer", "", "", "Argument[1]", "Argument[0]", "taint", "manual"] - - ["io", "", False, "CopyN", "", "", "Argument[1]", "Argument[0]", "taint", "manual"] - - ["io", "", False, "LimitReader", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] - - ["io", "", False, "NewSectionReader", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] - - ["io", "", False, "NopCloser", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] - - ["io", "", False, "ReadAll", "", "", "Argument[0]", "ReturnValue[0]", "taint", "manual"] - - ["io", "", False, "ReadAtLeast", "", "", "Argument[0]", "Argument[1]", "taint", "manual"] - - ["io", "", False, "ReadFull", "", "", "Argument[0]", "Argument[1]", "taint", "manual"] - - ["io", "", False, "TeeReader", "", "", "Argument[0]", "Argument[1]", "taint", "manual"] - - ["io", "", False, "TeeReader", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] - - ["io", "", False, "WriteString", "", "", "Argument[1]", "Argument[0]", "taint", "manual"] - - ["io", "Reader", True, "Read", "", "", "Argument[receiver]", "Argument[0]", "taint", "manual"] - - ["io", "ReaderAt", True, "ReadAt", "", "", "Argument[receiver]", "Argument[0]", "taint", "manual"] - - ["io", "ReaderFrom", True, "ReadFrom", "", "", "Argument[0]", "Argument[receiver]", "taint", "manual"] - - ["io", "StringWriter", True, "WriteString", "", "", "Argument[0]", "Argument[receiver]", "taint", "manual"] - - ["io", "Writer", True, "Write", "", "", "Argument[0]", "Argument[receiver]", "taint", "manual"] - - ["io", "WriterAt", True, "WriteAt", "", "", "Argument[0]", "Argument[receiver]", "taint", "manual"] - - ["io", "WriterTo", True, "WriteTo", "", "", "Argument[receiver]", "Argument[0]", "taint", "manual"] diff --git a/go/ql/lib/ext/k8s.io.api.core.model.json b/go/ql/lib/ext/k8s.io.api.core.model.json new file mode 100644 index 000000000000..ea3423f1df5d --- /dev/null +++ b/go/ql/lib/ext/k8s.io.api.core.model.json @@ -0,0 +1,22 @@ +{ + "extensions": [ + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "summaryModel" + }, + "data": [ + ["k8s.io/api/core", "Secret", true, "DeepCopy", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"], + ["k8s.io/api/core", "Secret", true, "DeepCopyInto", "", "", "Argument[receiver]", "Argument[0]", "taint", "manual"], + ["k8s.io/api/core", "Secret", true, "DeepCopyObject", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"], + ["k8s.io/api/core", "Secret", true, "Marshal", "", "", "Argument[receiver]", "ReturnValue[0]", "taint", "manual"], + ["k8s.io/api/core", "Secret", true, "Unmarshal", "", "", "Argument[receiver]", "Argument[0]", "taint", "manual"], + ["k8s.io/api/core", "SecretList", true, "DeepCopy", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"], + ["k8s.io/api/core", "SecretList", true, "DeepCopyInto", "", "", "Argument[receiver]", "Argument[0]", "taint", "manual"], + ["k8s.io/api/core", "SecretList", true, "DeepCopyObject", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"], + ["k8s.io/api/core", "SecretList", true, "Marshal", "", "", "Argument[receiver]", "ReturnValue[0]", "taint", "manual"], + ["k8s.io/api/core", "SecretList", true, "Unmarshal", "", "", "Argument[receiver]", "Argument[0]", "taint", "manual"] + ] + } + ] +} diff --git a/go/ql/lib/ext/k8s.io.api.core.model.yml b/go/ql/lib/ext/k8s.io.api.core.model.yml deleted file mode 100644 index 7c2a5fd25664..000000000000 --- a/go/ql/lib/ext/k8s.io.api.core.model.yml +++ /dev/null @@ -1,15 +0,0 @@ -extensions: - - addsTo: - pack: codeql/go-all - extensible: summaryModel - data: - - ["k8s.io/api/core", "Secret", True, "DeepCopy", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] - - ["k8s.io/api/core", "Secret", True, "DeepCopyInto", "", "", "Argument[receiver]", "Argument[0]", "taint", "manual"] - - ["k8s.io/api/core", "Secret", True, "DeepCopyObject", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] - - ["k8s.io/api/core", "Secret", True, "Marshal", "", "", "Argument[receiver]", "ReturnValue[0]", "taint", "manual"] - - ["k8s.io/api/core", "Secret", True, "Unmarshal", "", "", "Argument[receiver]", "Argument[0]", "taint", "manual"] - - ["k8s.io/api/core", "SecretList", True, "DeepCopy", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] - - ["k8s.io/api/core", "SecretList", True, "DeepCopyInto", "", "", "Argument[receiver]", "Argument[0]", "taint", "manual"] - - ["k8s.io/api/core", "SecretList", True, "DeepCopyObject", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] - - ["k8s.io/api/core", "SecretList", True, "Marshal", "", "", "Argument[receiver]", "ReturnValue[0]", "taint", "manual"] - - ["k8s.io/api/core", "SecretList", True, "Unmarshal", "", "", "Argument[receiver]", "Argument[0]", "taint", "manual"] diff --git a/go/ql/lib/ext/k8s.io.apimachinery.pkg.runtime.model.json b/go/ql/lib/ext/k8s.io.apimachinery.pkg.runtime.model.json new file mode 100644 index 000000000000..a8985f7bcb84 --- /dev/null +++ b/go/ql/lib/ext/k8s.io.apimachinery.pkg.runtime.model.json @@ -0,0 +1,59 @@ +{ + "extensions": [ + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "summaryModel" + }, + "data": [ + ["k8s.io/apimachinery/pkg/runtime", "", false, "Convert_Slice_string_To_Pointer_int64", "", "", "Argument[0]", "Argument[1]", "taint", "manual"], + ["k8s.io/apimachinery/pkg/runtime", "", false, "Convert_Slice_string_To_int", "", "", "Argument[0]", "Argument[1]", "taint", "manual"], + ["k8s.io/apimachinery/pkg/runtime", "", false, "Convert_Slice_string_To_int64", "", "", "Argument[0]", "Argument[1]", "taint", "manual"], + ["k8s.io/apimachinery/pkg/runtime", "", false, "Convert_Slice_string_To_string", "", "", "Argument[0]", "Argument[1]", "taint", "manual"], + ["k8s.io/apimachinery/pkg/runtime", "", false, "Convert_runtime_Object_To_runtime_RawExtension", "", "", "Argument[0]", "Argument[1]", "taint", "manual"], + ["k8s.io/apimachinery/pkg/runtime", "", false, "Convert_runtime_RawExtension_To_runtime_Object", "", "", "Argument[0]", "Argument[1]", "taint", "manual"], + ["k8s.io/apimachinery/pkg/runtime", "", false, "Convert_string_To_Pointer_int64", "", "", "Argument[0]", "Argument[1]", "taint", "manual"], + ["k8s.io/apimachinery/pkg/runtime", "", false, "Convert_string_To_int64", "", "", "Argument[0]", "Argument[1]", "taint", "manual"], + ["k8s.io/apimachinery/pkg/runtime", "", false, "Decode", "", "", "Argument[1]", "ReturnValue[0]", "taint", "manual"], + ["k8s.io/apimachinery/pkg/runtime", "", false, "DecodeInto", "", "", "Argument[1]", "Argument[2]", "taint", "manual"], + ["k8s.io/apimachinery/pkg/runtime", "", false, "DeepCopyJSON", "", "", "Argument[0]", "ReturnValue", "taint", "manual"], + ["k8s.io/apimachinery/pkg/runtime", "", false, "DeepCopyJSONValue", "", "", "Argument[0]", "ReturnValue", "taint", "manual"], + ["k8s.io/apimachinery/pkg/runtime", "", false, "Encode", "", "", "Argument[1]", "ReturnValue[0]", "taint", "manual"], + ["k8s.io/apimachinery/pkg/runtime", "", false, "EncodeOrDie", "", "", "Argument[1]", "ReturnValue", "taint", "manual"], + ["k8s.io/apimachinery/pkg/runtime", "", false, "Field", "", "", "Argument[0]", "Argument[2]", "taint", "manual"], + ["k8s.io/apimachinery/pkg/runtime", "", false, "FieldPtr", "", "", "Argument[0]", "Argument[2]", "taint", "manual"], + ["k8s.io/apimachinery/pkg/runtime", "", false, "NewEncodable", "", "", "Argument[1]", "ReturnValue", "taint", "manual"], + ["k8s.io/apimachinery/pkg/runtime", "", false, "NewEncodableList", "", "", "Argument[1]", "ReturnValue", "taint", "manual"], + ["k8s.io/apimachinery/pkg/runtime", "", false, "SetField", "", "", "Argument[0]", "Argument[1]", "taint", "manual"], + ["k8s.io/apimachinery/pkg/runtime", "", false, "UseOrCreateObject", "", "", "Argument[3]", "ReturnValue[0]", "taint", "manual"], + ["k8s.io/apimachinery/pkg/runtime", "CacheableObject", true, "CacheEncode", "", "", "Argument[receiver]", "Argument[2]", "taint", "manual"], + ["k8s.io/apimachinery/pkg/runtime", "CacheableObject", true, "GetObject", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"], + ["k8s.io/apimachinery/pkg/runtime", "Decoder", true, "Decode", "", "", "Argument[0]", "Argument[2]", "taint", "manual"], + ["k8s.io/apimachinery/pkg/runtime", "Decoder", true, "Decode", "", "", "Argument[0]", "ReturnValue[0]", "taint", "manual"], + ["k8s.io/apimachinery/pkg/runtime", "Encoder", true, "Encode", "", "", "Argument[0]", "Argument[1]", "taint", "manual"], + ["k8s.io/apimachinery/pkg/runtime", "Framer", true, "NewFrameReader", "", "", "Argument[0]", "ReturnValue", "taint", "manual"], + ["k8s.io/apimachinery/pkg/runtime", "Framer", true, "NewFrameWriter", "", "", "Argument[0]", "ReturnValue", "taint", "manual"], + ["k8s.io/apimachinery/pkg/runtime", "Object", true, "DeepCopyObject", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"], + ["k8s.io/apimachinery/pkg/runtime", "ObjectConvertor", true, "Convert", "", "", "Argument[0]", "Argument[1]", "taint", "manual"], + ["k8s.io/apimachinery/pkg/runtime", "ObjectVersioner", true, "ConvertToVersion", "", "", "Argument[0]", "ReturnValue[0]", "taint", "manual"], + ["k8s.io/apimachinery/pkg/runtime", "ParameterCodec", true, "DecodeParameters", "", "", "Argument[0]", "Argument[2]", "taint", "manual"], + ["k8s.io/apimachinery/pkg/runtime", "ParameterCodec", true, "EncodeParameters", "", "", "Argument[0]", "ReturnValue[0]", "taint", "manual"], + ["k8s.io/apimachinery/pkg/runtime", "ProtobufMarshaller", true, "MarshalTo", "", "", "Argument[receiver]", "Argument[0]", "taint", "manual"], + ["k8s.io/apimachinery/pkg/runtime", "ProtobufReverseMarshaller", true, "MarshalToSizedBuffer", "", "", "Argument[receiver]", "Argument[0]", "taint", "manual"], + ["k8s.io/apimachinery/pkg/runtime", "RawExtension", true, "DeepCopy", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"], + ["k8s.io/apimachinery/pkg/runtime", "RawExtension", true, "DeepCopyInto", "", "", "Argument[receiver]", "Argument[0]", "taint", "manual"], + ["k8s.io/apimachinery/pkg/runtime", "RawExtension", true, "Marshal", "", "", "Argument[receiver]", "ReturnValue[0]", "taint", "manual"], + ["k8s.io/apimachinery/pkg/runtime", "RawExtension", true, "Unmarshal", "", "", "Argument[receiver]", "Argument[0]", "taint", "manual"], + ["k8s.io/apimachinery/pkg/runtime", "Unknown", true, "DeepCopy", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"], + ["k8s.io/apimachinery/pkg/runtime", "Unknown", true, "DeepCopyInto", "", "", "Argument[receiver]", "Argument[0]", "taint", "manual"], + ["k8s.io/apimachinery/pkg/runtime", "Unknown", true, "Marshal", "", "", "Argument[receiver]", "ReturnValue[0]", "taint", "manual"], + ["k8s.io/apimachinery/pkg/runtime", "Unknown", true, "NestedMarshalTo", "", "", "Argument[receiver]", "Argument[0]", "taint", "manual"], + ["k8s.io/apimachinery/pkg/runtime", "Unknown", true, "Unmarshal", "", "", "Argument[receiver]", "Argument[0]", "taint", "manual"], + ["k8s.io/apimachinery/pkg/runtime", "Unstructured", true, "SetUnstructuredContent", "", "", "Argument[0]", "Argument[receiver]", "taint", "manual"], + ["k8s.io/apimachinery/pkg/runtime", "Unstructured", true, "UnstructuredContent", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"], + ["k8s.io/apimachinery/pkg/runtime", "WithoutVersionDecoder", true, "Decode", "", "", "Argument[0]", "Argument[2]", "taint", "manual"], + ["k8s.io/apimachinery/pkg/runtime", "WithoutVersionDecoder", true, "Decode", "", "", "Argument[0]", "ReturnValue[0]", "taint", "manual"] + ] + } + ] +} diff --git a/go/ql/lib/ext/k8s.io.apimachinery.pkg.runtime.model.yml b/go/ql/lib/ext/k8s.io.apimachinery.pkg.runtime.model.yml deleted file mode 100644 index e960b741ac79..000000000000 --- a/go/ql/lib/ext/k8s.io.apimachinery.pkg.runtime.model.yml +++ /dev/null @@ -1,52 +0,0 @@ -extensions: - - addsTo: - pack: codeql/go-all - extensible: summaryModel - data: - - ["k8s.io/apimachinery/pkg/runtime", "", False, "Convert_Slice_string_To_Pointer_int64", "", "", "Argument[0]", "Argument[1]", "taint", "manual"] - - ["k8s.io/apimachinery/pkg/runtime", "", False, "Convert_Slice_string_To_int", "", "", "Argument[0]", "Argument[1]", "taint", "manual"] - - ["k8s.io/apimachinery/pkg/runtime", "", False, "Convert_Slice_string_To_int64", "", "", "Argument[0]", "Argument[1]", "taint", "manual"] - - ["k8s.io/apimachinery/pkg/runtime", "", False, "Convert_Slice_string_To_string", "", "", "Argument[0]", "Argument[1]", "taint", "manual"] - - ["k8s.io/apimachinery/pkg/runtime", "", False, "Convert_runtime_Object_To_runtime_RawExtension", "", "", "Argument[0]", "Argument[1]", "taint", "manual"] - - ["k8s.io/apimachinery/pkg/runtime", "", False, "Convert_runtime_RawExtension_To_runtime_Object", "", "", "Argument[0]", "Argument[1]", "taint", "manual"] - - ["k8s.io/apimachinery/pkg/runtime", "", False, "Convert_string_To_Pointer_int64", "", "", "Argument[0]", "Argument[1]", "taint", "manual"] - - ["k8s.io/apimachinery/pkg/runtime", "", False, "Convert_string_To_int64", "", "", "Argument[0]", "Argument[1]", "taint", "manual"] - - ["k8s.io/apimachinery/pkg/runtime", "", False, "Decode", "", "", "Argument[1]", "ReturnValue[0]", "taint", "manual"] - - ["k8s.io/apimachinery/pkg/runtime", "", False, "DecodeInto", "", "", "Argument[1]", "Argument[2]", "taint", "manual"] - - ["k8s.io/apimachinery/pkg/runtime", "", False, "DeepCopyJSON", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] - - ["k8s.io/apimachinery/pkg/runtime", "", False, "DeepCopyJSONValue", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] - - ["k8s.io/apimachinery/pkg/runtime", "", False, "Encode", "", "", "Argument[1]", "ReturnValue[0]", "taint", "manual"] - - ["k8s.io/apimachinery/pkg/runtime", "", False, "EncodeOrDie", "", "", "Argument[1]", "ReturnValue", "taint", "manual"] - - ["k8s.io/apimachinery/pkg/runtime", "", False, "Field", "", "", "Argument[0]", "Argument[2]", "taint", "manual"] - - ["k8s.io/apimachinery/pkg/runtime", "", False, "FieldPtr", "", "", "Argument[0]", "Argument[2]", "taint", "manual"] - - ["k8s.io/apimachinery/pkg/runtime", "", False, "NewEncodable", "", "", "Argument[1]", "ReturnValue", "taint", "manual"] - - ["k8s.io/apimachinery/pkg/runtime", "", False, "NewEncodableList", "", "", "Argument[1]", "ReturnValue", "taint", "manual"] - - ["k8s.io/apimachinery/pkg/runtime", "", False, "SetField", "", "", "Argument[0]", "Argument[1]", "taint", "manual"] - - ["k8s.io/apimachinery/pkg/runtime", "", False, "UseOrCreateObject", "", "", "Argument[3]", "ReturnValue[0]", "taint", "manual"] - - ["k8s.io/apimachinery/pkg/runtime", "CacheableObject", True, "CacheEncode", "", "", "Argument[receiver]", "Argument[2]", "taint", "manual"] - - ["k8s.io/apimachinery/pkg/runtime", "CacheableObject", True, "GetObject", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] - - ["k8s.io/apimachinery/pkg/runtime", "Decoder", True, "Decode", "", "", "Argument[0]", "Argument[2]", "taint", "manual"] - - ["k8s.io/apimachinery/pkg/runtime", "Decoder", True, "Decode", "", "", "Argument[0]", "ReturnValue[0]", "taint", "manual"] - - ["k8s.io/apimachinery/pkg/runtime", "Encoder", True, "Encode", "", "", "Argument[0]", "Argument[1]", "taint", "manual"] - - ["k8s.io/apimachinery/pkg/runtime", "Framer", True, "NewFrameReader", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] - - ["k8s.io/apimachinery/pkg/runtime", "Framer", True, "NewFrameWriter", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] - - ["k8s.io/apimachinery/pkg/runtime", "Object", True, "DeepCopyObject", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] - - ["k8s.io/apimachinery/pkg/runtime", "ObjectConvertor", True, "Convert", "", "", "Argument[0]", "Argument[1]", "taint", "manual"] - - ["k8s.io/apimachinery/pkg/runtime", "ObjectVersioner", True, "ConvertToVersion", "", "", "Argument[0]", "ReturnValue[0]", "taint", "manual"] - - ["k8s.io/apimachinery/pkg/runtime", "ParameterCodec", True, "DecodeParameters", "", "", "Argument[0]", "Argument[2]", "taint", "manual"] - - ["k8s.io/apimachinery/pkg/runtime", "ParameterCodec", True, "EncodeParameters", "", "", "Argument[0]", "ReturnValue[0]", "taint", "manual"] - - ["k8s.io/apimachinery/pkg/runtime", "ProtobufMarshaller", True, "MarshalTo", "", "", "Argument[receiver]", "Argument[0]", "taint", "manual"] - - ["k8s.io/apimachinery/pkg/runtime", "ProtobufReverseMarshaller", True, "MarshalToSizedBuffer", "", "", "Argument[receiver]", "Argument[0]", "taint", "manual"] - - ["k8s.io/apimachinery/pkg/runtime", "RawExtension", True, "DeepCopy", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] - - ["k8s.io/apimachinery/pkg/runtime", "RawExtension", True, "DeepCopyInto", "", "", "Argument[receiver]", "Argument[0]", "taint", "manual"] - - ["k8s.io/apimachinery/pkg/runtime", "RawExtension", True, "Marshal", "", "", "Argument[receiver]", "ReturnValue[0]", "taint", "manual"] - - ["k8s.io/apimachinery/pkg/runtime", "RawExtension", True, "Unmarshal", "", "", "Argument[receiver]", "Argument[0]", "taint", "manual"] - - ["k8s.io/apimachinery/pkg/runtime", "Unknown", True, "DeepCopy", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] - - ["k8s.io/apimachinery/pkg/runtime", "Unknown", True, "DeepCopyInto", "", "", "Argument[receiver]", "Argument[0]", "taint", "manual"] - - ["k8s.io/apimachinery/pkg/runtime", "Unknown", True, "Marshal", "", "", "Argument[receiver]", "ReturnValue[0]", "taint", "manual"] - - ["k8s.io/apimachinery/pkg/runtime", "Unknown", True, "NestedMarshalTo", "", "", "Argument[receiver]", "Argument[0]", "taint", "manual"] - - ["k8s.io/apimachinery/pkg/runtime", "Unknown", True, "Unmarshal", "", "", "Argument[receiver]", "Argument[0]", "taint", "manual"] - - ["k8s.io/apimachinery/pkg/runtime", "Unstructured", True, "SetUnstructuredContent", "", "", "Argument[0]", "Argument[receiver]", "taint", "manual"] - - ["k8s.io/apimachinery/pkg/runtime", "Unstructured", True, "UnstructuredContent", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] - - ["k8s.io/apimachinery/pkg/runtime", "WithoutVersionDecoder", True, "Decode", "", "", "Argument[0]", "Argument[2]", "taint", "manual"] - - ["k8s.io/apimachinery/pkg/runtime", "WithoutVersionDecoder", True, "Decode", "", "", "Argument[0]", "ReturnValue[0]", "taint", "manual"] diff --git a/go/ql/lib/ext/log.model.json b/go/ql/lib/ext/log.model.json new file mode 100644 index 000000000000..5b2feef0af42 --- /dev/null +++ b/go/ql/lib/ext/log.model.json @@ -0,0 +1,43 @@ +{ + "extensions": [ + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "sinkModel" + }, + "data": [ + ["log", "", false, "Fatal", "", "", "Argument[0]", "log-injection", "manual"], + ["log", "", false, "Fatalf", "", "", "Argument[0..1]", "log-injection", "manual"], + ["log", "", false, "Fatalln", "", "", "Argument[0]", "log-injection", "manual"], + ["log", "", false, "Output", "", "", "Argument[1]", "log-injection", "manual"], + ["log", "", false, "Panic", "", "", "Argument[0]", "log-injection", "manual"], + ["log", "", false, "Panicf", "", "", "Argument[0..1]", "log-injection", "manual"], + ["log", "", false, "Panicln", "", "", "Argument[0]", "log-injection", "manual"], + ["log", "", false, "Print", "", "", "Argument[0]", "log-injection", "manual"], + ["log", "", false, "Printf", "", "", "Argument[0..1]", "log-injection", "manual"], + ["log", "", false, "Println", "", "", "Argument[0]", "log-injection", "manual"], + ["log", "Logger", true, "Fatal", "", "", "Argument[0]", "log-injection", "manual"], + ["log", "Logger", true, "Fatalf", "", "", "Argument[0..1]", "log-injection", "manual"], + ["log", "Logger", true, "Fatalln", "", "", "Argument[0]", "log-injection", "manual"], + ["log", "Logger", true, "Output", "", "", "Argument[1]", "log-injection", "manual"], + ["log", "Logger", true, "Panic", "", "", "Argument[0]", "log-injection", "manual"], + ["log", "Logger", true, "Panicf", "", "", "Argument[0..1]", "log-injection", "manual"], + ["log", "Logger", true, "Panicln", "", "", "Argument[0]", "log-injection", "manual"], + ["log", "Logger", true, "Print", "", "", "Argument[0]", "log-injection", "manual"], + ["log", "Logger", true, "Printf", "", "", "Argument[0..1]", "log-injection", "manual"], + ["log", "Logger", true, "Println", "", "", "Argument[0]", "log-injection", "manual"] + ] + }, + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "summaryModel" + }, + "data": [ + ["log", "Logger", true, "SetOutput", "", "", "Argument[receiver]", "Argument[0]", "taint", "manual"], + ["log", "Logger", true, "SetPrefix", "", "", "Argument[0]", "Argument[receiver]", "taint", "manual"], + ["log", "Logger", true, "Writer", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] + ] + } + ] +} diff --git a/go/ql/lib/ext/log.model.yml b/go/ql/lib/ext/log.model.yml deleted file mode 100644 index 4d1df7cf0821..000000000000 --- a/go/ql/lib/ext/log.model.yml +++ /dev/null @@ -1,32 +0,0 @@ -extensions: - - addsTo: - pack: codeql/go-all - extensible: sinkModel - data: - - ["log", "", False, "Fatal", "", "", "Argument[0]", "log-injection", "manual"] - - ["log", "", False, "Fatalf", "", "", "Argument[0..1]", "log-injection", "manual"] - - ["log", "", False, "Fatalln", "", "", "Argument[0]", "log-injection", "manual"] - - ["log", "", False, "Output", "", "", "Argument[1]", "log-injection", "manual"] - - ["log", "", False, "Panic", "", "", "Argument[0]", "log-injection", "manual"] - - ["log", "", False, "Panicf", "", "", "Argument[0..1]", "log-injection", "manual"] - - ["log", "", False, "Panicln", "", "", "Argument[0]", "log-injection", "manual"] - - ["log", "", False, "Print", "", "", "Argument[0]", "log-injection", "manual"] - - ["log", "", False, "Printf", "", "", "Argument[0..1]", "log-injection", "manual"] - - ["log", "", False, "Println", "", "", "Argument[0]", "log-injection", "manual"] - - ["log", "Logger", True, "Fatal", "", "", "Argument[0]", "log-injection", "manual"] - - ["log", "Logger", True, "Fatalf", "", "", "Argument[0..1]", "log-injection", "manual"] - - ["log", "Logger", True, "Fatalln", "", "", "Argument[0]", "log-injection", "manual"] - - ["log", "Logger", True, "Output", "", "", "Argument[1]", "log-injection", "manual"] - - ["log", "Logger", True, "Panic", "", "", "Argument[0]", "log-injection", "manual"] - - ["log", "Logger", True, "Panicf", "", "", "Argument[0..1]", "log-injection", "manual"] - - ["log", "Logger", True, "Panicln", "", "", "Argument[0]", "log-injection", "manual"] - - ["log", "Logger", True, "Print", "", "", "Argument[0]", "log-injection", "manual"] - - ["log", "Logger", True, "Printf", "", "", "Argument[0..1]", "log-injection", "manual"] - - ["log", "Logger", True, "Println", "", "", "Argument[0]", "log-injection", "manual"] - - addsTo: - pack: codeql/go-all - extensible: summaryModel - data: - - ["log", "Logger", True, "SetOutput", "", "", "Argument[receiver]", "Argument[0]", "taint", "manual"] - - ["log", "Logger", True, "SetPrefix", "", "", "Argument[0]", "Argument[receiver]", "taint", "manual"] - - ["log", "Logger", True, "Writer", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] diff --git a/go/ql/lib/ext/log.slog.model.json b/go/ql/lib/ext/log.slog.model.json new file mode 100644 index 000000000000..d1c098bffb25 --- /dev/null +++ b/go/ql/lib/ext/log.slog.model.json @@ -0,0 +1,64 @@ +{ + "extensions": [ + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "sinkModel" + }, + "data": [ + // Package-level convenience functions (msg string, args ...any). + ["log/slog", "", false, "Debug", "", "", "Argument[0..1]", "log-injection", "manual"], + ["log/slog", "", false, "Info", "", "", "Argument[0..1]", "log-injection", "manual"], + ["log/slog", "", false, "Warn", "", "", "Argument[0..1]", "log-injection", "manual"], + ["log/slog", "", false, "Error", "", "", "Argument[0..1]", "log-injection", "manual"], + // Context variants (ctx, msg string, args ...any). + ["log/slog", "", false, "DebugContext", "", "", "Argument[1..2]", "log-injection", "manual"], + ["log/slog", "", false, "InfoContext", "", "", "Argument[1..2]", "log-injection", "manual"], + ["log/slog", "", false, "WarnContext", "", "", "Argument[1..2]", "log-injection", "manual"], + ["log/slog", "", false, "ErrorContext", "", "", "Argument[1..2]", "log-injection", "manual"], + // Log/LogAttrs (ctx, level, msg string, args/attrs ...). + ["log/slog", "", false, "Log", "", "", "Argument[2..3]", "log-injection", "manual"], + ["log/slog", "", false, "LogAttrs", "", "", "Argument[2..3]", "log-injection", "manual"], + // Methods on *slog.Logger. + ["log/slog", "Logger", true, "Debug", "", "", "Argument[0..1]", "log-injection", "manual"], + ["log/slog", "Logger", true, "Info", "", "", "Argument[0..1]", "log-injection", "manual"], + ["log/slog", "Logger", true, "Warn", "", "", "Argument[0..1]", "log-injection", "manual"], + ["log/slog", "Logger", true, "Error", "", "", "Argument[0..1]", "log-injection", "manual"], + ["log/slog", "Logger", true, "DebugContext", "", "", "Argument[1..2]", "log-injection", "manual"], + ["log/slog", "Logger", true, "InfoContext", "", "", "Argument[1..2]", "log-injection", "manual"], + ["log/slog", "Logger", true, "WarnContext", "", "", "Argument[1..2]", "log-injection", "manual"], + ["log/slog", "Logger", true, "ErrorContext", "", "", "Argument[1..2]", "log-injection", "manual"], + ["log/slog", "Logger", true, "Log", "", "", "Argument[2..3]", "log-injection", "manual"], + ["log/slog", "Logger", true, "LogAttrs", "", "", "Argument[2..3]", "log-injection", "manual"], + // With/WithGroup add attributes that are included in every subsequent log call. + ["log/slog", "", false, "With", "", "", "Argument[0]", "log-injection", "manual"], + ["log/slog", "Logger", true, "With", "", "", "Argument[0]", "log-injection", "manual"], + ["log/slog", "Logger", true, "WithGroup", "", "", "Argument[0]", "log-injection", "manual"] + ] + }, + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "summaryModel" + }, + "data": [ + // Constructors for Attr that can carry a tainted string into the result. + ["log/slog", "", false, "Any", "", "", "Argument[0..1]", "ReturnValue", "taint", "manual"], + ["log/slog", "", false, "Group", "", "", "Argument[0]", "ReturnValue", "taint", "manual"], + ["log/slog", "", false, "Group", "", "", "Argument[1].ArrayElement", "ReturnValue", "taint", "manual"], + ["log/slog", "", false, "GroupAttrs", "", "", "Argument[0]", "ReturnValue", "taint", "manual"], + ["log/slog", "", false, "GroupAttrs", "", "", "Argument[1].ArrayElement", "ReturnValue", "taint", "manual"], + ["log/slog", "", false, "String", "", "", "Argument[0..1]", "ReturnValue", "taint", "manual"], + // Constructors for Value that can carry a tainted string into the result. + ["log/slog", "", false, "AnyValue", "", "", "Argument[0]", "ReturnValue", "taint", "manual"], + ["log/slog", "", false, "GroupValue", "", "", "Argument[0].ArrayElement", "ReturnValue", "taint", "manual"], + ["log/slog", "", false, "StringValue", "", "", "Argument[0]", "ReturnValue", "taint", "manual"], + // Methods that read a string back out of an Attr or Value. + ["log/slog", "Attr", true, "String", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"], + ["log/slog", "Value", true, "Any", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"], + ["log/slog", "Value", true, "Group", "", "", "Argument[receiver]", "ReturnValue.ArrayElement", "taint", "manual"], + ["log/slog", "Value", true, "String", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] + ] + } + ] +} diff --git a/go/ql/lib/ext/log.slog.model.yml b/go/ql/lib/ext/log.slog.model.yml deleted file mode 100644 index 888f2b54aaec..000000000000 --- a/go/ql/lib/ext/log.slog.model.yml +++ /dev/null @@ -1,53 +0,0 @@ -extensions: - - addsTo: - pack: codeql/go-all - extensible: sinkModel - data: - # Package-level convenience functions (msg string, args ...any). - - ["log/slog", "", False, "Debug", "", "", "Argument[0..1]", "log-injection", "manual"] - - ["log/slog", "", False, "Info", "", "", "Argument[0..1]", "log-injection", "manual"] - - ["log/slog", "", False, "Warn", "", "", "Argument[0..1]", "log-injection", "manual"] - - ["log/slog", "", False, "Error", "", "", "Argument[0..1]", "log-injection", "manual"] - # Context variants (ctx, msg string, args ...any). - - ["log/slog", "", False, "DebugContext", "", "", "Argument[1..2]", "log-injection", "manual"] - - ["log/slog", "", False, "InfoContext", "", "", "Argument[1..2]", "log-injection", "manual"] - - ["log/slog", "", False, "WarnContext", "", "", "Argument[1..2]", "log-injection", "manual"] - - ["log/slog", "", False, "ErrorContext", "", "", "Argument[1..2]", "log-injection", "manual"] - # Log/LogAttrs (ctx, level, msg string, args/attrs ...). - - ["log/slog", "", False, "Log", "", "", "Argument[2..3]", "log-injection", "manual"] - - ["log/slog", "", False, "LogAttrs", "", "", "Argument[2..3]", "log-injection", "manual"] - # Methods on *slog.Logger. - - ["log/slog", "Logger", True, "Debug", "", "", "Argument[0..1]", "log-injection", "manual"] - - ["log/slog", "Logger", True, "Info", "", "", "Argument[0..1]", "log-injection", "manual"] - - ["log/slog", "Logger", True, "Warn", "", "", "Argument[0..1]", "log-injection", "manual"] - - ["log/slog", "Logger", True, "Error", "", "", "Argument[0..1]", "log-injection", "manual"] - - ["log/slog", "Logger", True, "DebugContext", "", "", "Argument[1..2]", "log-injection", "manual"] - - ["log/slog", "Logger", True, "InfoContext", "", "", "Argument[1..2]", "log-injection", "manual"] - - ["log/slog", "Logger", True, "WarnContext", "", "", "Argument[1..2]", "log-injection", "manual"] - - ["log/slog", "Logger", True, "ErrorContext", "", "", "Argument[1..2]", "log-injection", "manual"] - - ["log/slog", "Logger", True, "Log", "", "", "Argument[2..3]", "log-injection", "manual"] - - ["log/slog", "Logger", True, "LogAttrs", "", "", "Argument[2..3]", "log-injection", "manual"] - # With/WithGroup add attributes that are included in every subsequent log call. - - ["log/slog", "", False, "With", "", "", "Argument[0]", "log-injection", "manual"] - - ["log/slog", "Logger", True, "With", "", "", "Argument[0]", "log-injection", "manual"] - - ["log/slog", "Logger", True, "WithGroup", "", "", "Argument[0]", "log-injection", "manual"] - - addsTo: - pack: codeql/go-all - extensible: summaryModel - data: - # Constructors for Attr that can carry a tainted string into the result. - - ["log/slog", "", False, "Any", "", "", "Argument[0..1]", "ReturnValue", "taint", "manual"] - - ["log/slog", "", False, "Group", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] - - ["log/slog", "", False, "Group", "", "", "Argument[1].ArrayElement", "ReturnValue", "taint", "manual"] - - ["log/slog", "", False, "GroupAttrs", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] - - ["log/slog", "", False, "GroupAttrs", "", "", "Argument[1].ArrayElement", "ReturnValue", "taint", "manual"] - - ["log/slog", "", False, "String", "", "", "Argument[0..1]", "ReturnValue", "taint", "manual"] - # Constructors for Value that can carry a tainted string into the result. - - ["log/slog", "", False, "AnyValue", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] - - ["log/slog", "", False, "GroupValue", "", "", "Argument[0].ArrayElement", "ReturnValue", "taint", "manual"] - - ["log/slog", "", False, "StringValue", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] - # Methods that read a string back out of an Attr or Value. - - ["log/slog", "Attr", True, "String", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] - - ["log/slog", "Value", True, "Any", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] - - ["log/slog", "Value", True, "Group", "", "", "Argument[receiver]", "ReturnValue.ArrayElement", "taint", "manual"] - - ["log/slog", "Value", True, "String", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] diff --git a/go/ql/lib/ext/maps.model.json b/go/ql/lib/ext/maps.model.json new file mode 100644 index 000000000000..5c496b1a019b --- /dev/null +++ b/go/ql/lib/ext/maps.model.json @@ -0,0 +1,21 @@ +{ + "extensions": [ + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "summaryModel" + }, + "data": [ + // All should be modeled when we have a way to model iterators + ["maps", "", false, "Clone", "", "", "Argument[0].MapKey", "ReturnValue.MapKey", "value", "manual"], + ["maps", "", false, "Clone", "", "", "Argument[0].MapValue", "ReturnValue.MapValue", "value", "manual"], + // Collect should be modeled when we have a way to model iterators + ["maps", "", false, "Copy", "", "", "Argument[1].MapKey", "Argument[0].MapKey", "value", "manual"], + ["maps", "", false, "Copy", "", "", "Argument[1].MapValue", "Argument[0].MapValue", "value", "manual"] + ] + } + ] +} +// Insert should be modeled when we have a way to model iterators +// Keys should be modeled when we have a way to model iterators +// Values should be modeled when we have a way to model iterators diff --git a/go/ql/lib/ext/maps.model.yml b/go/ql/lib/ext/maps.model.yml deleted file mode 100644 index ce772ae31a46..000000000000 --- a/go/ql/lib/ext/maps.model.yml +++ /dev/null @@ -1,14 +0,0 @@ -extensions: - - addsTo: - pack: codeql/go-all - extensible: summaryModel - data: - # All should be modeled when we have a way to model iterators - - ["maps", "", False, "Clone", "", "", "Argument[0].MapKey", "ReturnValue.MapKey", "value", "manual"] - - ["maps", "", False, "Clone", "", "", "Argument[0].MapValue", "ReturnValue.MapValue", "value", "manual"] - # Collect should be modeled when we have a way to model iterators - - ["maps", "", False, "Copy", "", "", "Argument[1].MapKey", "Argument[0].MapKey", "value", "manual"] - - ["maps", "", False, "Copy", "", "", "Argument[1].MapValue", "Argument[0].MapValue", "value", "manual"] - # Insert should be modeled when we have a way to model iterators - # Keys should be modeled when we have a way to model iterators - # Values should be modeled when we have a way to model iterators diff --git a/go/ql/lib/ext/math.big.model.json b/go/ql/lib/ext/math.big.model.json new file mode 100644 index 000000000000..fa82de328537 --- /dev/null +++ b/go/ql/lib/ext/math.big.model.json @@ -0,0 +1,13 @@ +{ + "extensions": [ + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "summaryModel" + }, + "data": [ + ["math/big", "Int", true, "Int64", "", "", "Argument[receiver]", "ReturnValue[0]", "taint", "manual"] + ] + } + ] +} diff --git a/go/ql/lib/ext/math.big.model.yml b/go/ql/lib/ext/math.big.model.yml deleted file mode 100644 index dc09561897c9..000000000000 --- a/go/ql/lib/ext/math.big.model.yml +++ /dev/null @@ -1,6 +0,0 @@ -extensions: - - addsTo: - pack: codeql/go-all - extensible: summaryModel - data: - - ["math/big", "Int", True, "Int64", "", "", "Argument[receiver]", "ReturnValue[0]", "taint", "manual"] diff --git a/go/ql/lib/ext/mime.model.json b/go/ql/lib/ext/mime.model.json new file mode 100644 index 000000000000..70f92f75c2bb --- /dev/null +++ b/go/ql/lib/ext/mime.model.json @@ -0,0 +1,17 @@ +{ + "extensions": [ + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "summaryModel" + }, + "data": [ + ["mime", "", false, "FormatMediaType", "", "", "Argument[0..1]", "ReturnValue", "taint", "manual"], + ["mime", "", false, "ParseMediaType", "", "", "Argument[0]", "ReturnValue[0..1]", "taint", "manual"], + ["mime", "WordDecoder", true, "Decode", "", "", "Argument[0]", "ReturnValue[0]", "taint", "manual"], + ["mime", "WordDecoder", true, "DecodeHeader", "", "", "Argument[0]", "ReturnValue[0]", "taint", "manual"], + ["mime", "WordEncoder", true, "Encode", "", "", "Argument[1]", "ReturnValue", "taint", "manual"] + ] + } + ] +} diff --git a/go/ql/lib/ext/mime.model.yml b/go/ql/lib/ext/mime.model.yml deleted file mode 100644 index 9027905423f7..000000000000 --- a/go/ql/lib/ext/mime.model.yml +++ /dev/null @@ -1,10 +0,0 @@ -extensions: - - addsTo: - pack: codeql/go-all - extensible: summaryModel - data: - - ["mime", "", False, "FormatMediaType", "", "", "Argument[0..1]", "ReturnValue", "taint", "manual"] - - ["mime", "", False, "ParseMediaType", "", "", "Argument[0]", "ReturnValue[0..1]", "taint", "manual"] - - ["mime", "WordDecoder", True, "Decode", "", "", "Argument[0]", "ReturnValue[0]", "taint", "manual"] - - ["mime", "WordDecoder", True, "DecodeHeader", "", "", "Argument[0]", "ReturnValue[0]", "taint", "manual"] - - ["mime", "WordEncoder", True, "Encode", "", "", "Argument[1]", "ReturnValue", "taint", "manual"] diff --git a/go/ql/lib/ext/mime.multipart.model.json b/go/ql/lib/ext/mime.multipart.model.json new file mode 100644 index 000000000000..6ea2cb2fd75e --- /dev/null +++ b/go/ql/lib/ext/mime.multipart.model.json @@ -0,0 +1,41 @@ +{ + "extensions": [ + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "barrierModel" + }, + "data": [ + // The only way to create a `mime/multipart.FileHeader` is to create a + // `mime/multipart.Form`, which creates the `Filename` field of each + // `mime/multipart.FileHeader` by calling `Part.FileName`, which calls + // `path/filepath.Base` on its return value. In general `path/filepath.Base` + // is not a sanitizer for path traversal, but in this specific case where the + // output is going to be used as a filename rather than a directory name, it + // is adequate. + ["mime/multipart", "FileHeader", false, "Filename", "", "", "", "path-injection", "manual"], + // `Part.FileName` calls `path/filepath.Base` on its return value. In + // general `path/filepath.Base` is not a sanitizer for path traversal, but in + // this specific case where the output is going to be used as a filename + // rather than a directory name, it is adequate. + ["mime/multipart", "Part", false, "FileName", "", "", "ReturnValue", "path-injection", "manual"] + ] + }, + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "summaryModel" + }, + "data": [ + ["mime/multipart", "", false, "NewReader", "", "", "Argument[0]", "ReturnValue", "taint", "manual"], + ["mime/multipart", "FileHeader", true, "Open", "", "", "Argument[receiver]", "ReturnValue[0]", "taint", "manual"], + ["mime/multipart", "Part", true, "FileName", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"], + ["mime/multipart", "Part", true, "FormName", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"], + ["mime/multipart", "Reader", true, "NextPart", "", "", "Argument[receiver]", "ReturnValue[0]", "taint", "manual"], + ["mime/multipart", "Reader", true, "NextRawPart", "", "", "Argument[receiver]", "ReturnValue[0]", "taint", "manual"], + ["mime/multipart", "Reader", true, "ReadForm", "", "", "Argument[receiver]", "ReturnValue[0]", "taint", "manual"], + ["mime/multipart", "Writer", true, "WriteField", "", "", "Argument[0..1]", "Argument[receiver]", "taint", "manual"] + ] + } + ] +} diff --git a/go/ql/lib/ext/mime.multipart.model.yml b/go/ql/lib/ext/mime.multipart.model.yml deleted file mode 100644 index 134481dfce33..000000000000 --- a/go/ql/lib/ext/mime.multipart.model.yml +++ /dev/null @@ -1,30 +0,0 @@ -extensions: - - addsTo: - pack: codeql/go-all - extensible: barrierModel - data: - # The only way to create a `mime/multipart.FileHeader` is to create a - # `mime/multipart.Form`, which creates the `Filename` field of each - # `mime/multipart.FileHeader` by calling `Part.FileName`, which calls - # `path/filepath.Base` on its return value. In general `path/filepath.Base` - # is not a sanitizer for path traversal, but in this specific case where the - # output is going to be used as a filename rather than a directory name, it - # is adequate. - - ["mime/multipart", "FileHeader", False, "Filename", "", "", "", "path-injection", "manual"] - # `Part.FileName` calls `path/filepath.Base` on its return value. In - # general `path/filepath.Base` is not a sanitizer for path traversal, but in - # this specific case where the output is going to be used as a filename - # rather than a directory name, it is adequate. - - ["mime/multipart", "Part", False, "FileName", "", "", "ReturnValue", "path-injection", "manual"] - - addsTo: - pack: codeql/go-all - extensible: summaryModel - data: - - ["mime/multipart", "", False, "NewReader", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] - - ["mime/multipart", "FileHeader", True, "Open", "", "", "Argument[receiver]", "ReturnValue[0]", "taint", "manual"] - - ["mime/multipart", "Part", True, "FileName", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] - - ["mime/multipart", "Part", True, "FormName", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] - - ["mime/multipart", "Reader", True, "NextPart", "", "", "Argument[receiver]", "ReturnValue[0]", "taint", "manual"] - - ["mime/multipart", "Reader", True, "NextRawPart", "", "", "Argument[receiver]", "ReturnValue[0]", "taint", "manual"] - - ["mime/multipart", "Reader", True, "ReadForm", "", "", "Argument[receiver]", "ReturnValue[0]", "taint", "manual"] - - ["mime/multipart", "Writer", True, "WriteField", "", "", "Argument[0..1]", "Argument[receiver]", "taint", "manual"] diff --git a/go/ql/lib/ext/mime.quotedprintable.model.json b/go/ql/lib/ext/mime.quotedprintable.model.json new file mode 100644 index 000000000000..d7b875056b19 --- /dev/null +++ b/go/ql/lib/ext/mime.quotedprintable.model.json @@ -0,0 +1,13 @@ +{ + "extensions": [ + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "summaryModel" + }, + "data": [ + ["mime/quotedprintable", "", false, "NewReader", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] + ] + } + ] +} diff --git a/go/ql/lib/ext/mime.quotedprintable.model.yml b/go/ql/lib/ext/mime.quotedprintable.model.yml deleted file mode 100644 index 7ac77332727c..000000000000 --- a/go/ql/lib/ext/mime.quotedprintable.model.yml +++ /dev/null @@ -1,6 +0,0 @@ -extensions: - - addsTo: - pack: codeql/go-all - extensible: summaryModel - data: - - ["mime/quotedprintable", "", False, "NewReader", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] diff --git a/go/ql/lib/ext/net.http.httputil.model.json b/go/ql/lib/ext/net.http.httputil.model.json new file mode 100644 index 000000000000..f6a9371abd4d --- /dev/null +++ b/go/ql/lib/ext/net.http.httputil.model.json @@ -0,0 +1,22 @@ +{ + "extensions": [ + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "summaryModel" + }, + "data": [ + ["net/http/httputil", "", false, "DumpRequest", "", "", "Argument[0]", "ReturnValue[0]", "taint", "manual"], + ["net/http/httputil", "", false, "DumpRequestOut", "", "", "Argument[0]", "ReturnValue[0]", "taint", "manual"], + ["net/http/httputil", "", false, "DumpResponse", "", "", "Argument[0]", "ReturnValue[0]", "taint", "manual"], + ["net/http/httputil", "", false, "NewChunkedReader", "", "", "Argument[0]", "ReturnValue", "taint", "manual"], + ["net/http/httputil", "", false, "NewClientConn", "", "", "Argument[0..1]", "ReturnValue", "taint", "manual"], + ["net/http/httputil", "", false, "NewProxyClientConn", "", "", "Argument[0..1]", "ReturnValue", "taint", "manual"], + ["net/http/httputil", "BufferPool", true, "Get", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"], + ["net/http/httputil", "BufferPool", true, "Put", "", "", "Argument[0]", "Argument[receiver]", "taint", "manual"], + ["net/http/httputil", "ClientConn", true, "Hijack", "", "", "Argument[receiver]", "ReturnValue[0..1]", "taint", "manual"], + ["net/http/httputil", "ServerConn", true, "Hijack", "", "", "Argument[receiver]", "ReturnValue[0..1]", "taint", "manual"] + ] + } + ] +} diff --git a/go/ql/lib/ext/net.http.httputil.model.yml b/go/ql/lib/ext/net.http.httputil.model.yml deleted file mode 100644 index 783322b36ae6..000000000000 --- a/go/ql/lib/ext/net.http.httputil.model.yml +++ /dev/null @@ -1,15 +0,0 @@ -extensions: - - addsTo: - pack: codeql/go-all - extensible: summaryModel - data: - - ["net/http/httputil", "", False, "DumpRequest", "", "", "Argument[0]", "ReturnValue[0]", "taint", "manual"] - - ["net/http/httputil", "", False, "DumpRequestOut", "", "", "Argument[0]", "ReturnValue[0]", "taint", "manual"] - - ["net/http/httputil", "", False, "DumpResponse", "", "", "Argument[0]", "ReturnValue[0]", "taint", "manual"] - - ["net/http/httputil", "", False, "NewChunkedReader", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] - - ["net/http/httputil", "", False, "NewClientConn", "", "", "Argument[0..1]", "ReturnValue", "taint", "manual"] - - ["net/http/httputil", "", False, "NewProxyClientConn", "", "", "Argument[0..1]", "ReturnValue", "taint", "manual"] - - ["net/http/httputil", "BufferPool", True, "Get", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] - - ["net/http/httputil", "BufferPool", True, "Put", "", "", "Argument[0]", "Argument[receiver]", "taint", "manual"] - - ["net/http/httputil", "ClientConn", True, "Hijack", "", "", "Argument[receiver]", "ReturnValue[0..1]", "taint", "manual"] - - ["net/http/httputil", "ServerConn", True, "Hijack", "", "", "Argument[receiver]", "ReturnValue[0..1]", "taint", "manual"] diff --git a/go/ql/lib/ext/net.http.model.json b/go/ql/lib/ext/net.http.model.json new file mode 100644 index 000000000000..59296e9ff775 --- /dev/null +++ b/go/ql/lib/ext/net.http.model.json @@ -0,0 +1,70 @@ +{ + "extensions": [ + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "sinkModel" + }, + "data": [ + // path-injection + ["net/http", "", false, "ServeFile", "", "", "Argument[2]", "path-injection", "manual"], + // url-redirection + ["net/http", "", false, "Redirect", "", "", "Argument[2]", "url-redirection[0]", "manual"] + ] + }, + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "summaryModel" + }, + "data": [ + ["net/http", "", false, "CanonicalHeaderKey", "", "", "Argument[0]", "ReturnValue", "taint", "manual"], + ["net/http", "", false, "Error", "", "", "Argument[1]", "Argument[0]", "taint", "manual"], + ["net/http", "", false, "MaxBytesReader", "", "", "Argument[1]", "ReturnValue", "taint", "manual"], + ["net/http", "", false, "NewRequest", "", "", "Argument[1]", "ReturnValue[0]", "taint", "manual"], + ["net/http", "", false, "NewRequestWithContext", "", "", "Argument[2]", "ReturnValue[0]", "taint", "manual"], + ["net/http", "", false, "ReadRequest", "", "", "Argument[0]", "ReturnValue[0]", "taint", "manual"], + ["net/http", "", false, "ReadResponse", "", "", "Argument[0]", "ReturnValue[0]", "taint", "manual"], + ["net/http", "", false, "SetCookie", "", "", "Argument[1]", "Argument[0]", "taint", "manual"], + ["net/http", "Header", true, "Add", "", "", "Argument[0..1]", "Argument[receiver]", "taint", "manual"], + ["net/http", "Header", true, "Clone", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"], + ["net/http", "Header", true, "Get", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"], + ["net/http", "Header", true, "Set", "", "", "Argument[0..1]", "Argument[receiver]", "taint", "manual"], + ["net/http", "Header", true, "Values", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"], + ["net/http", "Header", true, "Write", "", "", "Argument[receiver]", "Argument[0]", "taint", "manual"], + ["net/http", "Header", true, "WriteSubset", "", "", "Argument[receiver]", "Argument[0]", "taint", "manual"], + ["net/http", "Hijacker", true, "Hijack", "", "", "Argument[receiver]", "ReturnValue[0..1]", "taint", "manual"], + ["net/http", "Request", true, "AddCookie", "", "", "Argument[0]", "Argument[receiver]", "taint", "manual"], + ["net/http", "Request", true, "Clone", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"], + ["net/http", "Request", true, "Write", "", "", "Argument[receiver]", "Argument[0]", "taint", "manual"], + ["net/http", "Request", true, "WriteProxy", "", "", "Argument[receiver]", "Argument[0]", "taint", "manual"], + ["net/http", "Response", true, "Write", "", "", "Argument[receiver]", "Argument[0]", "taint", "manual"], + ["net/http", "Transport", true, "Clone", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] + ] + }, + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "sourceModel" + }, + "data": [ + ["net/http", "Request", true, "Cookie", "", "", "ReturnValue[0]", "remote", "manual"], + ["net/http", "Request", true, "Cookies", "", "", "ReturnValue.ArrayElement", "remote", "manual"], + ["net/http", "Request", true, "FormFile", "", "", "ReturnValue[0..1]", "remote", "manual"], + ["net/http", "Request", true, "FormValue", "", "", "ReturnValue", "remote", "manual"], + ["net/http", "Request", true, "MultipartReader", "", "", "ReturnValue[0]", "remote", "manual"], + ["net/http", "Request", true, "PostFormValue", "", "", "ReturnValue", "remote", "manual"], + ["net/http", "Request", true, "Referer", "", "", "ReturnValue", "remote", "manual"], + ["net/http", "Request", true, "UserAgent", "", "", "ReturnValue", "remote", "manual"], + ["net/http", "Request", true, "Body", "", "", "", "remote", "manual"], + ["net/http", "Request", true, "GetBody", "", "", "", "remote", "manual"], + ["net/http", "Request", true, "Form", "", "", "", "remote", "manual"], + ["net/http", "Request", true, "PostForm", "", "", "", "remote", "manual"], + ["net/http", "Request", true, "MultipartForm", "", "", "", "remote", "manual"], + ["net/http", "Request", true, "Header", "", "", "", "remote", "manual"], + ["net/http", "Request", true, "Trailer", "", "", "", "remote", "manual"], + ["net/http", "Request", true, "URL", "", "", "", "remote", "manual"] + ] + } + ] +} diff --git a/go/ql/lib/ext/net.http.model.yml b/go/ql/lib/ext/net.http.model.yml deleted file mode 100644 index 2bf417cf8f3a..000000000000 --- a/go/ql/lib/ext/net.http.model.yml +++ /dev/null @@ -1,55 +0,0 @@ -extensions: - - addsTo: - pack: codeql/go-all - extensible: sinkModel - data: - # path-injection - - ["net/http", "", False, "ServeFile", "", "", "Argument[2]", "path-injection", "manual"] - # url-redirection - - ["net/http", "", False, "Redirect", "", "", "Argument[2]", "url-redirection[0]", "manual"] - - addsTo: - pack: codeql/go-all - extensible: summaryModel - data: - - ["net/http", "", False, "CanonicalHeaderKey", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] - - ["net/http", "", False, "Error", "", "", "Argument[1]", "Argument[0]", "taint", "manual"] - - ["net/http", "", False, "MaxBytesReader", "", "", "Argument[1]", "ReturnValue", "taint", "manual"] - - ["net/http", "", False, "NewRequest", "", "", "Argument[1]", "ReturnValue[0]", "taint", "manual"] - - ["net/http", "", False, "NewRequestWithContext", "", "", "Argument[2]", "ReturnValue[0]", "taint", "manual"] - - ["net/http", "", False, "ReadRequest", "", "", "Argument[0]", "ReturnValue[0]", "taint", "manual"] - - ["net/http", "", False, "ReadResponse", "", "", "Argument[0]", "ReturnValue[0]", "taint", "manual"] - - ["net/http", "", False, "SetCookie", "", "", "Argument[1]", "Argument[0]", "taint", "manual"] - - ["net/http", "Header", True, "Add", "", "", "Argument[0..1]", "Argument[receiver]", "taint", "manual"] - - ["net/http", "Header", True, "Clone", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] - - ["net/http", "Header", True, "Get", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] - - ["net/http", "Header", True, "Set", "", "", "Argument[0..1]", "Argument[receiver]", "taint", "manual"] - - ["net/http", "Header", True, "Values", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] - - ["net/http", "Header", True, "Write", "", "", "Argument[receiver]", "Argument[0]", "taint", "manual"] - - ["net/http", "Header", True, "WriteSubset", "", "", "Argument[receiver]", "Argument[0]", "taint", "manual"] - - ["net/http", "Hijacker", True, "Hijack", "", "", "Argument[receiver]", "ReturnValue[0..1]", "taint", "manual"] - - ["net/http", "Request", True, "AddCookie", "", "", "Argument[0]", "Argument[receiver]", "taint", "manual"] - - ["net/http", "Request", True, "Clone", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] - - ["net/http", "Request", True, "Write", "", "", "Argument[receiver]", "Argument[0]", "taint", "manual"] - - ["net/http", "Request", True, "WriteProxy", "", "", "Argument[receiver]", "Argument[0]", "taint", "manual"] - - ["net/http", "Response", True, "Write", "", "", "Argument[receiver]", "Argument[0]", "taint", "manual"] - - ["net/http", "Transport", True, "Clone", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] - - addsTo: - pack: codeql/go-all - extensible: sourceModel - data: - - ["net/http", "Request", True, "Cookie", "", "", "ReturnValue[0]", "remote", "manual"] - - ["net/http", "Request", True, "Cookies", "", "", "ReturnValue.ArrayElement", "remote", "manual"] - - ["net/http", "Request", True, "FormFile", "", "", "ReturnValue[0..1]", "remote", "manual"] - - ["net/http", "Request", True, "FormValue", "", "", "ReturnValue", "remote", "manual"] - - ["net/http", "Request", True, "MultipartReader", "", "", "ReturnValue[0]", "remote", "manual"] - - ["net/http", "Request", True, "PostFormValue", "", "", "ReturnValue", "remote", "manual"] - - ["net/http", "Request", True, "Referer", "", "", "ReturnValue", "remote", "manual"] - - ["net/http", "Request", True, "UserAgent", "", "", "ReturnValue", "remote", "manual"] - - ["net/http", "Request", True, "Body", "", "", "", "remote", "manual"] - - ["net/http", "Request", True, "GetBody", "", "", "", "remote", "manual"] - - ["net/http", "Request", True, "Form", "", "", "", "remote", "manual"] - - ["net/http", "Request", True, "PostForm", "", "", "", "remote", "manual"] - - ["net/http", "Request", True, "MultipartForm", "", "", "", "remote", "manual"] - - ["net/http", "Request", True, "Header", "", "", "", "remote", "manual"] - - ["net/http", "Request", True, "Trailer", "", "", "", "remote", "manual"] - - ["net/http", "Request", True, "URL", "", "", "", "remote", "manual"] diff --git a/go/ql/lib/ext/net.mail.model.json b/go/ql/lib/ext/net.mail.model.json new file mode 100644 index 000000000000..d2c554a76295 --- /dev/null +++ b/go/ql/lib/ext/net.mail.model.json @@ -0,0 +1,18 @@ +{ + "extensions": [ + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "summaryModel" + }, + "data": [ + ["net/mail", "", false, "ParseAddress", "", "", "Argument[0]", "ReturnValue[0]", "taint", "manual"], + ["net/mail", "", false, "ParseAddressList", "", "", "Argument[0]", "ReturnValue[0]", "taint", "manual"], + ["net/mail", "", false, "ReadMessage", "", "", "Argument[0]", "ReturnValue[0]", "taint", "manual"], + ["net/mail", "AddressParser", true, "Parse", "", "", "Argument[0]", "ReturnValue[0]", "taint", "manual"], + ["net/mail", "AddressParser", true, "ParseList", "", "", "Argument[0]", "ReturnValue[0]", "taint", "manual"], + ["net/mail", "Header", true, "Get", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] + ] + } + ] +} diff --git a/go/ql/lib/ext/net.mail.model.yml b/go/ql/lib/ext/net.mail.model.yml deleted file mode 100644 index 0bb4ef1884bc..000000000000 --- a/go/ql/lib/ext/net.mail.model.yml +++ /dev/null @@ -1,11 +0,0 @@ -extensions: - - addsTo: - pack: codeql/go-all - extensible: summaryModel - data: - - ["net/mail", "", False, "ParseAddress", "", "", "Argument[0]", "ReturnValue[0]", "taint", "manual"] - - ["net/mail", "", False, "ParseAddressList", "", "", "Argument[0]", "ReturnValue[0]", "taint", "manual"] - - ["net/mail", "", False, "ReadMessage", "", "", "Argument[0]", "ReturnValue[0]", "taint", "manual"] - - ["net/mail", "AddressParser", True, "Parse", "", "", "Argument[0]", "ReturnValue[0]", "taint", "manual"] - - ["net/mail", "AddressParser", True, "ParseList", "", "", "Argument[0]", "ReturnValue[0]", "taint", "manual"] - - ["net/mail", "Header", True, "Get", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] diff --git a/go/ql/lib/ext/net.model.json b/go/ql/lib/ext/net.model.json new file mode 100644 index 000000000000..04f627a27a07 --- /dev/null +++ b/go/ql/lib/ext/net.model.json @@ -0,0 +1,32 @@ +{ + "extensions": [ + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "summaryModel" + }, + "data": [ + ["net", "", false, "FileConn", "", "", "Argument[0]", "ReturnValue[0]", "taint", "manual"], + ["net", "", false, "FilePacketConn", "", "", "Argument[0]", "ReturnValue[0]", "taint", "manual"], + ["net", "", false, "JoinHostPort", "", "", "Argument[0..1]", "ReturnValue", "taint", "manual"], + ["net", "", false, "SplitHostPort", "", "", "Argument[0]", "ReturnValue[0..1]", "taint", "manual"], + ["net", "IPConn", true, "ReadFromIP", "", "", "Argument[receiver]", "Argument[0]", "taint", "manual"], + ["net", "IPConn", true, "ReadMsgIP", "", "", "Argument[receiver]", "Argument[0..1]", "taint", "manual"], + ["net", "IPConn", true, "WriteMsgIP", "", "", "Argument[0..1]", "Argument[receiver]", "taint", "manual"], + ["net", "IPConn", true, "WriteToIP", "", "", "Argument[0]", "Argument[receiver]", "taint", "manual"], + ["net", "PacketConn", true, "ReadFrom", "", "", "Argument[receiver]", "Argument[0]", "taint", "manual"], + ["net", "PacketConn", true, "WriteTo", "", "", "Argument[0]", "Argument[receiver]", "taint", "manual"], + ["net", "TCPListener", true, "File", "", "", "Argument[receiver]", "ReturnValue[0]", "taint", "manual"], + ["net", "UDPConn", true, "ReadFromUDP", "", "", "Argument[receiver]", "Argument[0]", "taint", "manual"], + ["net", "UDPConn", true, "ReadMsgUDP", "", "", "Argument[receiver]", "Argument[0..1]", "taint", "manual"], + ["net", "UDPConn", true, "WriteMsgUDP", "", "", "Argument[0..1]", "Argument[receiver]", "taint", "manual"], + ["net", "UDPConn", true, "WriteToUDP", "", "", "Argument[0]", "Argument[receiver]", "taint", "manual"], + ["net", "UnixConn", true, "ReadFromUnix", "", "", "Argument[receiver]", "Argument[0]", "taint", "manual"], + ["net", "UnixConn", true, "ReadMsgUnix", "", "", "Argument[receiver]", "Argument[0..1]", "taint", "manual"], + ["net", "UnixConn", true, "WriteMsgUnix", "", "", "Argument[0..1]", "Argument[receiver]", "taint", "manual"], + ["net", "UnixConn", true, "WriteToUnix", "", "", "Argument[0]", "Argument[receiver]", "taint", "manual"], + ["net", "UnixListener", true, "File", "", "", "Argument[receiver]", "ReturnValue[0]", "taint", "manual"] + ] + } + ] +} diff --git a/go/ql/lib/ext/net.model.yml b/go/ql/lib/ext/net.model.yml deleted file mode 100644 index 0922b5b31d6f..000000000000 --- a/go/ql/lib/ext/net.model.yml +++ /dev/null @@ -1,25 +0,0 @@ -extensions: - - addsTo: - pack: codeql/go-all - extensible: summaryModel - data: - - ["net", "", False, "FileConn", "", "", "Argument[0]", "ReturnValue[0]", "taint", "manual"] - - ["net", "", False, "FilePacketConn", "", "", "Argument[0]", "ReturnValue[0]", "taint", "manual"] - - ["net", "", False, "JoinHostPort", "", "", "Argument[0..1]", "ReturnValue", "taint", "manual"] - - ["net", "", False, "SplitHostPort", "", "", "Argument[0]", "ReturnValue[0..1]", "taint", "manual"] - - ["net", "IPConn", True, "ReadFromIP", "", "", "Argument[receiver]", "Argument[0]", "taint", "manual"] - - ["net", "IPConn", True, "ReadMsgIP", "", "", "Argument[receiver]", "Argument[0..1]", "taint", "manual"] - - ["net", "IPConn", True, "WriteMsgIP", "", "", "Argument[0..1]", "Argument[receiver]", "taint", "manual"] - - ["net", "IPConn", True, "WriteToIP", "", "", "Argument[0]", "Argument[receiver]", "taint", "manual"] - - ["net", "PacketConn", True, "ReadFrom", "", "", "Argument[receiver]", "Argument[0]", "taint", "manual"] - - ["net", "PacketConn", True, "WriteTo", "", "", "Argument[0]", "Argument[receiver]", "taint", "manual"] - - ["net", "TCPListener", True, "File", "", "", "Argument[receiver]", "ReturnValue[0]", "taint", "manual"] - - ["net", "UDPConn", True, "ReadFromUDP", "", "", "Argument[receiver]", "Argument[0]", "taint", "manual"] - - ["net", "UDPConn", True, "ReadMsgUDP", "", "", "Argument[receiver]", "Argument[0..1]", "taint", "manual"] - - ["net", "UDPConn", True, "WriteMsgUDP", "", "", "Argument[0..1]", "Argument[receiver]", "taint", "manual"] - - ["net", "UDPConn", True, "WriteToUDP", "", "", "Argument[0]", "Argument[receiver]", "taint", "manual"] - - ["net", "UnixConn", True, "ReadFromUnix", "", "", "Argument[receiver]", "Argument[0]", "taint", "manual"] - - ["net", "UnixConn", True, "ReadMsgUnix", "", "", "Argument[receiver]", "Argument[0..1]", "taint", "manual"] - - ["net", "UnixConn", True, "WriteMsgUnix", "", "", "Argument[0..1]", "Argument[receiver]", "taint", "manual"] - - ["net", "UnixConn", True, "WriteToUnix", "", "", "Argument[0]", "Argument[receiver]", "taint", "manual"] - - ["net", "UnixListener", True, "File", "", "", "Argument[receiver]", "ReturnValue[0]", "taint", "manual"] diff --git a/go/ql/lib/ext/net.textproto.model.json b/go/ql/lib/ext/net.textproto.model.json new file mode 100644 index 000000000000..fbbeab42788c --- /dev/null +++ b/go/ql/lib/ext/net.textproto.model.json @@ -0,0 +1,31 @@ +{ + "extensions": [ + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "summaryModel" + }, + "data": [ + ["net/textproto", "", false, "CanonicalMIMEHeaderKey", "", "", "Argument[0]", "ReturnValue", "taint", "manual"], + ["net/textproto", "", false, "NewConn", "", "", "Argument[0]", "ReturnValue", "taint", "manual"], + ["net/textproto", "", false, "NewReader", "", "", "Argument[0]", "ReturnValue", "taint", "manual"], + ["net/textproto", "", false, "TrimBytes", "", "", "Argument[0]", "ReturnValue", "taint", "manual"], + ["net/textproto", "", false, "TrimString", "", "", "Argument[0]", "ReturnValue", "taint", "manual"], + ["net/textproto", "MIMEHeader", true, "Add", "", "", "Argument[0..1]", "Argument[receiver]", "taint", "manual"], + ["net/textproto", "MIMEHeader", true, "Get", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"], + ["net/textproto", "MIMEHeader", true, "Set", "", "", "Argument[0..1]", "Argument[receiver]", "taint", "manual"], + ["net/textproto", "MIMEHeader", true, "Values", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"], + ["net/textproto", "Reader", true, "DotReader", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"], + ["net/textproto", "Reader", true, "ReadCodeLine", "", "", "Argument[receiver]", "ReturnValue[1]", "taint", "manual"], + ["net/textproto", "Reader", true, "ReadContinuedLine", "", "", "Argument[receiver]", "ReturnValue[0]", "taint", "manual"], + ["net/textproto", "Reader", true, "ReadContinuedLineBytes", "", "", "Argument[receiver]", "ReturnValue[0]", "taint", "manual"], + ["net/textproto", "Reader", true, "ReadDotBytes", "", "", "Argument[receiver]", "ReturnValue[0]", "taint", "manual"], + ["net/textproto", "Reader", true, "ReadDotLines", "", "", "Argument[receiver]", "ReturnValue[0]", "taint", "manual"], + ["net/textproto", "Reader", true, "ReadLine", "", "", "Argument[receiver]", "ReturnValue[0]", "taint", "manual"], + ["net/textproto", "Reader", true, "ReadLineBytes", "", "", "Argument[receiver]", "ReturnValue[0]", "taint", "manual"], + ["net/textproto", "Reader", true, "ReadMIMEHeader", "", "", "Argument[receiver]", "ReturnValue[0]", "taint", "manual"], + ["net/textproto", "Reader", true, "ReadResponse", "", "", "Argument[receiver]", "ReturnValue[1]", "taint", "manual"] + ] + } + ] +} diff --git a/go/ql/lib/ext/net.textproto.model.yml b/go/ql/lib/ext/net.textproto.model.yml deleted file mode 100644 index 63a9da4497a5..000000000000 --- a/go/ql/lib/ext/net.textproto.model.yml +++ /dev/null @@ -1,24 +0,0 @@ -extensions: - - addsTo: - pack: codeql/go-all - extensible: summaryModel - data: - - ["net/textproto", "", False, "CanonicalMIMEHeaderKey", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] - - ["net/textproto", "", False, "NewConn", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] - - ["net/textproto", "", False, "NewReader", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] - - ["net/textproto", "", False, "TrimBytes", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] - - ["net/textproto", "", False, "TrimString", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] - - ["net/textproto", "MIMEHeader", True, "Add", "", "", "Argument[0..1]", "Argument[receiver]", "taint", "manual"] - - ["net/textproto", "MIMEHeader", True, "Get", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] - - ["net/textproto", "MIMEHeader", True, "Set", "", "", "Argument[0..1]", "Argument[receiver]", "taint", "manual"] - - ["net/textproto", "MIMEHeader", True, "Values", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] - - ["net/textproto", "Reader", True, "DotReader", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] - - ["net/textproto", "Reader", True, "ReadCodeLine", "", "", "Argument[receiver]", "ReturnValue[1]", "taint", "manual"] - - ["net/textproto", "Reader", True, "ReadContinuedLine", "", "", "Argument[receiver]", "ReturnValue[0]", "taint", "manual"] - - ["net/textproto", "Reader", True, "ReadContinuedLineBytes", "", "", "Argument[receiver]", "ReturnValue[0]", "taint", "manual"] - - ["net/textproto", "Reader", True, "ReadDotBytes", "", "", "Argument[receiver]", "ReturnValue[0]", "taint", "manual"] - - ["net/textproto", "Reader", True, "ReadDotLines", "", "", "Argument[receiver]", "ReturnValue[0]", "taint", "manual"] - - ["net/textproto", "Reader", True, "ReadLine", "", "", "Argument[receiver]", "ReturnValue[0]", "taint", "manual"] - - ["net/textproto", "Reader", True, "ReadLineBytes", "", "", "Argument[receiver]", "ReturnValue[0]", "taint", "manual"] - - ["net/textproto", "Reader", True, "ReadMIMEHeader", "", "", "Argument[receiver]", "ReturnValue[0]", "taint", "manual"] - - ["net/textproto", "Reader", True, "ReadResponse", "", "", "Argument[receiver]", "ReturnValue[1]", "taint", "manual"] diff --git a/go/ql/lib/ext/net.url.model.json b/go/ql/lib/ext/net.url.model.json new file mode 100644 index 000000000000..b270571fc089 --- /dev/null +++ b/go/ql/lib/ext/net.url.model.json @@ -0,0 +1,37 @@ +{ + "extensions": [ + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "summaryModel" + }, + "data": [ + ["net/url", "", false, "Parse", "", "", "Argument[0]", "ReturnValue[0]", "taint", "manual"], + ["net/url", "", false, "ParseQuery", "", "", "Argument[0]", "ReturnValue[0]", "taint", "manual"], + ["net/url", "", false, "ParseRequestURI", "", "", "Argument[0]", "ReturnValue[0]", "taint", "manual"], + ["net/url", "", false, "PathEscape", "", "", "Argument[0]", "ReturnValue", "taint", "manual"], + ["net/url", "", false, "PathUnescape", "", "", "Argument[0]", "ReturnValue[0]", "taint", "manual"], + ["net/url", "", false, "QueryEscape", "", "", "Argument[0]", "ReturnValue", "taint", "manual"], + ["net/url", "", false, "QueryUnescape", "", "", "Argument[0]", "ReturnValue[0]", "taint", "manual"], + ["net/url", "", false, "User", "", "", "Argument[0]", "ReturnValue", "taint", "manual"], + ["net/url", "", false, "UserPassword", "", "", "Argument[0..1]", "ReturnValue", "taint", "manual"], + ["net/url", "URL", true, "Clone", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"], + ["net/url", "URL", true, "EscapedPath", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"], + ["net/url", "URL", true, "Hostname", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"], + ["net/url", "URL", true, "MarshalBinary", "", "", "Argument[receiver]", "ReturnValue[0]", "taint", "manual"], + ["net/url", "URL", true, "Parse", "", "", "Argument[receiver]", "ReturnValue[0]", "taint", "manual"], + ["net/url", "URL", true, "Parse", "", "", "Argument[0]", "ReturnValue[0]", "taint", "manual"], + ["net/url", "URL", true, "Port", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"], + ["net/url", "URL", true, "Query", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"], + ["net/url", "URL", true, "RequestURI", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"], + ["net/url", "URL", true, "ResolveReference", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"], + ["net/url", "URL", true, "ResolveReference", "", "", "Argument[0]", "ReturnValue", "taint", "manual"], + ["net/url", "Userinfo", true, "Password", "", "", "Argument[receiver]", "ReturnValue[0]", "taint", "manual"], + ["net/url", "Userinfo", true, "Username", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"], + ["net/url", "Values", true, "Clone", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"], + ["net/url", "Values", true, "Encode", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"], + ["net/url", "Values", true, "Get", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] + ] + } + ] +} diff --git a/go/ql/lib/ext/net.url.model.yml b/go/ql/lib/ext/net.url.model.yml deleted file mode 100644 index ca4cf2c170f2..000000000000 --- a/go/ql/lib/ext/net.url.model.yml +++ /dev/null @@ -1,30 +0,0 @@ -extensions: - - addsTo: - pack: codeql/go-all - extensible: summaryModel - data: - - ["net/url", "", False, "Parse", "", "", "Argument[0]", "ReturnValue[0]", "taint", "manual"] - - ["net/url", "", False, "ParseQuery", "", "", "Argument[0]", "ReturnValue[0]", "taint", "manual"] - - ["net/url", "", False, "ParseRequestURI", "", "", "Argument[0]", "ReturnValue[0]", "taint", "manual"] - - ["net/url", "", False, "PathEscape", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] - - ["net/url", "", False, "PathUnescape", "", "", "Argument[0]", "ReturnValue[0]", "taint", "manual"] - - ["net/url", "", False, "QueryEscape", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] - - ["net/url", "", False, "QueryUnescape", "", "", "Argument[0]", "ReturnValue[0]", "taint", "manual"] - - ["net/url", "", False, "User", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] - - ["net/url", "", False, "UserPassword", "", "", "Argument[0..1]", "ReturnValue", "taint", "manual"] - - ["net/url", "URL", True, "Clone", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] - - ["net/url", "URL", True, "EscapedPath", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] - - ["net/url", "URL", True, "Hostname", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] - - ["net/url", "URL", True, "MarshalBinary", "", "", "Argument[receiver]", "ReturnValue[0]", "taint", "manual"] - - ["net/url", "URL", True, "Parse", "", "", "Argument[receiver]", "ReturnValue[0]", "taint", "manual"] - - ["net/url", "URL", True, "Parse", "", "", "Argument[0]", "ReturnValue[0]", "taint", "manual"] - - ["net/url", "URL", True, "Port", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] - - ["net/url", "URL", True, "Query", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] - - ["net/url", "URL", True, "RequestURI", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] - - ["net/url", "URL", True, "ResolveReference", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] - - ["net/url", "URL", True, "ResolveReference", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] - - ["net/url", "Userinfo", True, "Password", "", "", "Argument[receiver]", "ReturnValue[0]", "taint", "manual"] - - ["net/url", "Userinfo", True, "Username", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] - - ["net/url", "Values", True, "Clone", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] - - ["net/url", "Values", True, "Encode", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] - - ["net/url", "Values", True, "Get", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] diff --git a/go/ql/lib/ext/os.exec.model.json b/go/ql/lib/ext/os.exec.model.json new file mode 100644 index 000000000000..8ec4d1b8e50a --- /dev/null +++ b/go/ql/lib/ext/os.exec.model.json @@ -0,0 +1,14 @@ +{ + "extensions": [ + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "sinkModel" + }, + "data": [ + ["os/exec", "", false, "Command", "", "", "Argument[0]", "command-injection", "manual"], + ["os/exec", "", false, "CommandContext", "", "", "Argument[1]", "command-injection", "manual"] + ] + } + ] +} diff --git a/go/ql/lib/ext/os.exec.model.yml b/go/ql/lib/ext/os.exec.model.yml deleted file mode 100644 index 6b3a80c372c3..000000000000 --- a/go/ql/lib/ext/os.exec.model.yml +++ /dev/null @@ -1,7 +0,0 @@ -extensions: - - addsTo: - pack: codeql/go-all - extensible: sinkModel - data: - - ["os/exec", "", False, "Command", "", "", "Argument[0]", "command-injection", "manual"] - - ["os/exec", "", False, "CommandContext", "", "", "Argument[1]", "command-injection", "manual"] diff --git a/go/ql/lib/ext/os.model.json b/go/ql/lib/ext/os.model.json new file mode 100644 index 000000000000..1cfb7bbdf3ad --- /dev/null +++ b/go/ql/lib/ext/os.model.json @@ -0,0 +1,75 @@ +{ + "extensions": [ + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "sinkModel" + }, + "data": [ + // path-injection + ["os", "", false, "Chdir", "", "", "Argument[0]", "path-injection", "manual"], + ["os", "", false, "Chmod", "", "", "Argument[0]", "path-injection", "manual"], + ["os", "", false, "Chown", "", "", "Argument[0]", "path-injection", "manual"], + ["os", "", false, "Chtimes", "", "", "Argument[0]", "path-injection", "manual"], + ["os", "", false, "Create", "", "", "Argument[0]", "path-injection", "manual"], + ["os", "", false, "Lchown", "", "", "Argument[0]", "path-injection", "manual"], + ["os", "", false, "Link", "", "", "Argument[0..1]", "path-injection", "manual"], + ["os", "", false, "Lstat", "", "", "Argument[0]", "path-injection", "manual"], + ["os", "", false, "Mkdir", "", "", "Argument[0]", "path-injection", "manual"], + ["os", "", false, "MkdirAll", "", "", "Argument[0]", "path-injection", "manual"], + ["os", "", false, "NewFile", "", "", "Argument[1]", "path-injection", "manual"], + ["os", "", false, "Open", "", "", "Argument[0]", "path-injection", "manual"], + ["os", "", false, "OpenFile", "", "", "Argument[0]", "path-injection", "manual"], + ["os", "", false, "Readlink", "", "", "Argument[0]", "path-injection", "manual"], + ["os", "", false, "Remove", "", "", "Argument[0]", "path-injection", "manual"], + ["os", "", false, "RemoveAll", "", "", "Argument[0]", "path-injection", "manual"], + ["os", "", false, "Rename", "", "", "Argument[0..1]", "path-injection", "manual"], + ["os", "", false, "Stat", "", "", "Argument[0]", "path-injection", "manual"], + ["os", "", false, "Symlink", "", "", "Argument[0..1]", "path-injection", "manual"], + ["os", "", false, "Truncate", "", "", "Argument[0]", "path-injection", "manual"], + ["os", "", false, "DirFS", "", "", "Argument[0]", "path-injection", "manual"], + ["os", "", false, "ReadDir", "", "", "Argument[0]", "path-injection", "manual"], + ["os", "", false, "ReadFile", "", "", "Argument[0]", "path-injection", "manual"], + ["os", "", false, "MkdirTemp", "", "", "Argument[0..1]", "path-injection", "manual"], + ["os", "", false, "CreateTemp", "", "", "Argument[0]", "path-injection", "manual"], + ["os", "", false, "WriteFile", "", "", "Argument[0]", "path-injection", "manual"], + // command-injection + ["os", "", false, "StartProcess", "", "", "Argument[0]", "command-injection", "manual"] + ] + }, + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "summaryModel" + }, + "data": [ + ["os", "", false, "Expand", "", "", "Argument[0]", "ReturnValue", "taint", "manual"], + ["os", "", false, "ExpandEnv", "", "", "Argument[0]", "ReturnValue", "taint", "manual"], + ["os", "", false, "NewFile", "", "", "Argument[0]", "ReturnValue", "taint", "manual"], + ["os", "File", true, "Fd", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"], + ["os", "File", true, "Read", "", "", "Argument[receiver]", "Argument[0]", "taint", "manual"], + ["os", "File", true, "ReadAt", "", "", "Argument[receiver]", "Argument[0]", "taint", "manual"] + ] + }, + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "sourceModel" + }, + "data": [ + ["os", "", false, "Args", "", "", "", "commandargs", "manual"], + ["os", "", false, "Environ", "", "", "ReturnValue", "environment", "manual"], // TODO: when sources can have access paths, use .ArrayElement + ["os", "", false, "ExpandEnv", "", "", "ReturnValue", "environment", "manual"], + ["os", "", false, "Getenv", "", "", "ReturnValue", "environment", "manual"], + ["os", "", false, "LookupEnv", "", "", "ReturnValue[0]", "environment", "manual"], + ["os", "", false, "Open", "", "", "ReturnValue[0]", "file", "manual"], + ["os", "", false, "OpenFile", "", "", "ReturnValue[0]", "file", "manual"], + ["os", "", false, "ReadFile", "", "", "ReturnValue[0]", "file", "manual"], + ["os", "", false, "Stdin", "", "", "", "stdin", "manual"], + ["os", "", false, "UserCacheDir", "", "", "ReturnValue[0]", "environment", "manual"], + ["os", "", false, "UserConfigDir", "", "", "ReturnValue[0]", "environment", "manual"], + ["os", "", false, "UserHomeDir", "", "", "ReturnValue[0]", "environment", "manual"] + ] + } + ] +} diff --git a/go/ql/lib/ext/os.model.yml b/go/ql/lib/ext/os.model.yml deleted file mode 100644 index 7d2070b53bac..000000000000 --- a/go/ql/lib/ext/os.model.yml +++ /dev/null @@ -1,60 +0,0 @@ -extensions: - - addsTo: - pack: codeql/go-all - extensible: sinkModel - data: - # path-injection - - ["os", "", False, "Chdir", "", "", "Argument[0]", "path-injection", "manual"] - - ["os", "", False, "Chmod", "", "", "Argument[0]", "path-injection", "manual"] - - ["os", "", False, "Chown", "", "", "Argument[0]", "path-injection", "manual"] - - ["os", "", False, "Chtimes", "", "", "Argument[0]", "path-injection", "manual"] - - ["os", "", False, "Create", "", "", "Argument[0]", "path-injection", "manual"] - - ["os", "", False, "Lchown", "", "", "Argument[0]", "path-injection", "manual"] - - ["os", "", False, "Link", "", "", "Argument[0..1]", "path-injection", "manual"] - - ["os", "", False, "Lstat", "", "", "Argument[0]", "path-injection", "manual"] - - ["os", "", False, "Mkdir", "", "", "Argument[0]", "path-injection", "manual"] - - ["os", "", False, "MkdirAll", "", "", "Argument[0]", "path-injection", "manual"] - - ["os", "", False, "NewFile", "", "", "Argument[1]", "path-injection", "manual"] - - ["os", "", False, "Open", "", "", "Argument[0]", "path-injection", "manual"] - - ["os", "", False, "OpenFile", "", "", "Argument[0]", "path-injection", "manual"] - - ["os", "", False, "Readlink", "", "", "Argument[0]", "path-injection", "manual"] - - ["os", "", False, "Remove", "", "", "Argument[0]", "path-injection", "manual"] - - ["os", "", False, "RemoveAll", "", "", "Argument[0]", "path-injection", "manual"] - - ["os", "", False, "Rename", "", "", "Argument[0..1]", "path-injection", "manual"] - - ["os", "", False, "Stat", "", "", "Argument[0]", "path-injection", "manual"] - - ["os", "", False, "Symlink", "", "", "Argument[0..1]", "path-injection", "manual"] - - ["os", "", False, "Truncate", "", "", "Argument[0]", "path-injection", "manual"] - - ["os", "", False, "DirFS", "", "", "Argument[0]", "path-injection", "manual"] - - ["os", "", False, "ReadDir", "", "", "Argument[0]", "path-injection", "manual"] - - ["os", "", False, "ReadFile", "", "", "Argument[0]", "path-injection", "manual"] - - ["os", "", False, "MkdirTemp", "", "", "Argument[0..1]", "path-injection", "manual"] - - ["os", "", False, "CreateTemp", "", "", "Argument[0]", "path-injection", "manual"] - - ["os", "", False, "WriteFile", "", "", "Argument[0]", "path-injection", "manual"] - # command-injection - - ["os", "", False, "StartProcess", "", "", "Argument[0]", "command-injection", "manual"] - - addsTo: - pack: codeql/go-all - extensible: summaryModel - data: - - ["os", "", False, "Expand", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] - - ["os", "", False, "ExpandEnv", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] - - ["os", "", False, "NewFile", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] - - ["os", "File", True, "Fd", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] - - ["os", "File", True, "Read", "", "", "Argument[receiver]", "Argument[0]", "taint", "manual"] - - ["os", "File", True, "ReadAt", "", "", "Argument[receiver]", "Argument[0]", "taint", "manual"] - - addsTo: - pack: codeql/go-all - extensible: sourceModel - data: - - ["os", "", False, "Args", "", "", "", "commandargs", "manual"] - - ["os", "", False, "Environ", "", "", "ReturnValue", "environment", "manual"] # TODO: when sources can have access paths, use .ArrayElement - - ["os", "", False, "ExpandEnv", "", "", "ReturnValue", "environment", "manual"] - - ["os", "", False, "Getenv", "", "", "ReturnValue", "environment", "manual"] - - ["os", "", False, "LookupEnv", "", "", "ReturnValue[0]", "environment", "manual"] - - ["os", "", False, "Open", "", "", "ReturnValue[0]", "file", "manual"] - - ["os", "", False, "OpenFile", "", "", "ReturnValue[0]", "file", "manual"] - - ["os", "", False, "ReadFile", "", "", "ReturnValue[0]", "file", "manual"] - - ["os", "", False, "Stdin", "", "", "", "stdin", "manual"] - - ["os", "", False, "UserCacheDir", "", "", "ReturnValue[0]", "environment", "manual"] - - ["os", "", False, "UserConfigDir", "", "", "ReturnValue[0]", "environment", "manual"] - - ["os", "", False, "UserHomeDir", "", "", "ReturnValue[0]", "environment", "manual"] diff --git a/go/ql/lib/ext/path.filepath.model.json b/go/ql/lib/ext/path.filepath.model.json new file mode 100644 index 000000000000..27acb8645de2 --- /dev/null +++ b/go/ql/lib/ext/path.filepath.model.json @@ -0,0 +1,25 @@ +{ + "extensions": [ + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "summaryModel" + }, + "data": [ + ["path/filepath", "", false, "Abs", "", "", "Argument[0]", "ReturnValue[0]", "taint", "manual"], + ["path/filepath", "", false, "Base", "", "", "Argument[0]", "ReturnValue", "taint", "manual"], + ["path/filepath", "", false, "Clean", "", "", "Argument[0]", "ReturnValue", "taint", "manual"], + ["path/filepath", "", false, "Dir", "", "", "Argument[0]", "ReturnValue", "taint", "manual"], + ["path/filepath", "", false, "EvalSymlinks", "", "", "Argument[0]", "ReturnValue[0]", "taint", "manual"], + ["path/filepath", "", false, "Ext", "", "", "Argument[0]", "ReturnValue", "taint", "manual"], + ["path/filepath", "", false, "FromSlash", "", "", "Argument[0]", "ReturnValue", "taint", "manual"], + ["path/filepath", "", false, "Glob", "", "", "Argument[0]", "ReturnValue[0]", "taint", "manual"], + ["path/filepath", "", false, "Rel", "", "", "Argument[0..1]", "ReturnValue[0]", "taint", "manual"], + ["path/filepath", "", false, "Split", "", "", "Argument[0]", "ReturnValue[0..1]", "taint", "manual"], + ["path/filepath", "", false, "SplitList", "", "", "Argument[0]", "ReturnValue", "taint", "manual"], + ["path/filepath", "", false, "ToSlash", "", "", "Argument[0]", "ReturnValue", "taint", "manual"], + ["path/filepath", "", false, "VolumeName", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] + ] + } + ] +} diff --git a/go/ql/lib/ext/path.filepath.model.yml b/go/ql/lib/ext/path.filepath.model.yml deleted file mode 100644 index 15bcb7d386d8..000000000000 --- a/go/ql/lib/ext/path.filepath.model.yml +++ /dev/null @@ -1,18 +0,0 @@ -extensions: - - addsTo: - pack: codeql/go-all - extensible: summaryModel - data: - - ["path/filepath", "", False, "Abs", "", "", "Argument[0]", "ReturnValue[0]", "taint", "manual"] - - ["path/filepath", "", False, "Base", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] - - ["path/filepath", "", False, "Clean", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] - - ["path/filepath", "", False, "Dir", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] - - ["path/filepath", "", False, "EvalSymlinks", "", "", "Argument[0]", "ReturnValue[0]", "taint", "manual"] - - ["path/filepath", "", False, "Ext", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] - - ["path/filepath", "", False, "FromSlash", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] - - ["path/filepath", "", False, "Glob", "", "", "Argument[0]", "ReturnValue[0]", "taint", "manual"] - - ["path/filepath", "", False, "Rel", "", "", "Argument[0..1]", "ReturnValue[0]", "taint", "manual"] - - ["path/filepath", "", False, "Split", "", "", "Argument[0]", "ReturnValue[0..1]", "taint", "manual"] - - ["path/filepath", "", False, "SplitList", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] - - ["path/filepath", "", False, "ToSlash", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] - - ["path/filepath", "", False, "VolumeName", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] diff --git a/go/ql/lib/ext/path.model.json b/go/ql/lib/ext/path.model.json new file mode 100644 index 000000000000..0d1dba9e01d3 --- /dev/null +++ b/go/ql/lib/ext/path.model.json @@ -0,0 +1,17 @@ +{ + "extensions": [ + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "summaryModel" + }, + "data": [ + ["path", "", false, "Base", "", "", "Argument[0]", "ReturnValue", "taint", "manual"], + ["path", "", false, "Clean", "", "", "Argument[0]", "ReturnValue", "taint", "manual"], + ["path", "", false, "Dir", "", "", "Argument[0]", "ReturnValue", "taint", "manual"], + ["path", "", false, "Ext", "", "", "Argument[0]", "ReturnValue", "taint", "manual"], + ["path", "", false, "Split", "", "", "Argument[0]", "ReturnValue[0..1]", "taint", "manual"] + ] + } + ] +} diff --git a/go/ql/lib/ext/path.model.yml b/go/ql/lib/ext/path.model.yml deleted file mode 100644 index 5a494b24d7ca..000000000000 --- a/go/ql/lib/ext/path.model.yml +++ /dev/null @@ -1,10 +0,0 @@ -extensions: - - addsTo: - pack: codeql/go-all - extensible: summaryModel - data: - - ["path", "", False, "Base", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] - - ["path", "", False, "Clean", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] - - ["path", "", False, "Dir", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] - - ["path", "", False, "Ext", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] - - ["path", "", False, "Split", "", "", "Argument[0]", "ReturnValue[0..1]", "taint", "manual"] diff --git a/go/ql/lib/ext/reflect.model.json b/go/ql/lib/ext/reflect.model.json new file mode 100644 index 000000000000..16ae43637192 --- /dev/null +++ b/go/ql/lib/ext/reflect.model.json @@ -0,0 +1,49 @@ +{ + "extensions": [ + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "summaryModel" + }, + "data": [ + ["reflect", "", false, "AppendSlice", "", "", "Argument[0..1]", "ReturnValue", "taint", "manual"], + ["reflect", "", false, "Copy", "", "", "Argument[1]", "Argument[0]", "taint", "manual"], + ["reflect", "", false, "Indirect", "", "", "Argument[0]", "ReturnValue", "taint", "manual"], + ["reflect", "", false, "ValueOf", "", "", "Argument[0]", "ReturnValue", "taint", "manual"], + ["reflect", "MapIter", true, "Key", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"], + ["reflect", "MapIter", true, "Value", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"], + ["reflect", "StructTag", true, "Get", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"], + ["reflect", "StructTag", true, "Lookup", "", "", "Argument[receiver]", "ReturnValue[0]", "taint", "manual"], + ["reflect", "Value", true, "Addr", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"], + ["reflect", "Value", true, "Bytes", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"], + ["reflect", "Value", true, "Convert", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"], + ["reflect", "Value", true, "Elem", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"], + ["reflect", "Value", true, "Field", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"], + ["reflect", "Value", true, "FieldByIndex", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"], + ["reflect", "Value", true, "FieldByName", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"], + ["reflect", "Value", true, "FieldByNameFunc", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"], + ["reflect", "Value", true, "Index", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"], + ["reflect", "Value", true, "Interface", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"], + ["reflect", "Value", true, "InterfaceData", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"], + ["reflect", "Value", true, "MapIndex", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"], + ["reflect", "Value", true, "MapKeys", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"], + ["reflect", "Value", true, "MapRange", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"], + ["reflect", "Value", true, "Method", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"], + ["reflect", "Value", true, "MethodByName", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"], + ["reflect", "Value", true, "Pointer", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"], + ["reflect", "Value", true, "Recv", "", "", "Argument[receiver]", "ReturnValue[0]", "taint", "manual"], + ["reflect", "Value", true, "Send", "", "", "Argument[0]", "Argument[receiver]", "taint", "manual"], + ["reflect", "Value", true, "Set", "", "", "Argument[0]", "Argument[receiver]", "taint", "manual"], + ["reflect", "Value", true, "SetBytes", "", "", "Argument[0]", "Argument[receiver]", "taint", "manual"], + ["reflect", "Value", true, "SetMapIndex", "", "", "Argument[0..1]", "Argument[receiver]", "taint", "manual"], + ["reflect", "Value", true, "SetPointer", "", "", "Argument[0]", "Argument[receiver]", "taint", "manual"], + ["reflect", "Value", true, "SetString", "", "", "Argument[0]", "Argument[receiver]", "taint", "manual"], + ["reflect", "Value", true, "Slice", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"], + ["reflect", "Value", true, "Slice3", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"], + ["reflect", "Value", true, "TryRecv", "", "", "Argument[receiver]", "ReturnValue[0]", "taint", "manual"], + ["reflect", "Value", true, "TrySend", "", "", "Argument[0]", "Argument[receiver]", "taint", "manual"], + ["reflect", "Value", true, "UnsafeAddr", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] + ] + } + ] +} diff --git a/go/ql/lib/ext/reflect.model.yml b/go/ql/lib/ext/reflect.model.yml deleted file mode 100644 index 75b207f73a0f..000000000000 --- a/go/ql/lib/ext/reflect.model.yml +++ /dev/null @@ -1,42 +0,0 @@ -extensions: - - addsTo: - pack: codeql/go-all - extensible: summaryModel - data: - - ["reflect", "", False, "AppendSlice", "", "", "Argument[0..1]", "ReturnValue", "taint", "manual"] - - ["reflect", "", False, "Copy", "", "", "Argument[1]", "Argument[0]", "taint", "manual"] - - ["reflect", "", False, "Indirect", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] - - ["reflect", "", False, "ValueOf", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] - - ["reflect", "MapIter", True, "Key", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] - - ["reflect", "MapIter", True, "Value", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] - - ["reflect", "StructTag", True, "Get", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] - - ["reflect", "StructTag", True, "Lookup", "", "", "Argument[receiver]", "ReturnValue[0]", "taint", "manual"] - - ["reflect", "Value", True, "Addr", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] - - ["reflect", "Value", True, "Bytes", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] - - ["reflect", "Value", True, "Convert", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] - - ["reflect", "Value", True, "Elem", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] - - ["reflect", "Value", True, "Field", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] - - ["reflect", "Value", True, "FieldByIndex", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] - - ["reflect", "Value", True, "FieldByName", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] - - ["reflect", "Value", True, "FieldByNameFunc", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] - - ["reflect", "Value", True, "Index", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] - - ["reflect", "Value", True, "Interface", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] - - ["reflect", "Value", True, "InterfaceData", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] - - ["reflect", "Value", True, "MapIndex", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] - - ["reflect", "Value", True, "MapKeys", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] - - ["reflect", "Value", True, "MapRange", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] - - ["reflect", "Value", True, "Method", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] - - ["reflect", "Value", True, "MethodByName", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] - - ["reflect", "Value", True, "Pointer", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] - - ["reflect", "Value", True, "Recv", "", "", "Argument[receiver]", "ReturnValue[0]", "taint", "manual"] - - ["reflect", "Value", True, "Send", "", "", "Argument[0]", "Argument[receiver]", "taint", "manual"] - - ["reflect", "Value", True, "Set", "", "", "Argument[0]", "Argument[receiver]", "taint", "manual"] - - ["reflect", "Value", True, "SetBytes", "", "", "Argument[0]", "Argument[receiver]", "taint", "manual"] - - ["reflect", "Value", True, "SetMapIndex", "", "", "Argument[0..1]", "Argument[receiver]", "taint", "manual"] - - ["reflect", "Value", True, "SetPointer", "", "", "Argument[0]", "Argument[receiver]", "taint", "manual"] - - ["reflect", "Value", True, "SetString", "", "", "Argument[0]", "Argument[receiver]", "taint", "manual"] - - ["reflect", "Value", True, "Slice", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] - - ["reflect", "Value", True, "Slice3", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] - - ["reflect", "Value", True, "TryRecv", "", "", "Argument[receiver]", "ReturnValue[0]", "taint", "manual"] - - ["reflect", "Value", True, "TrySend", "", "", "Argument[0]", "Argument[receiver]", "taint", "manual"] - - ["reflect", "Value", True, "UnsafeAddr", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] diff --git a/go/ql/lib/ext/regexp.model.json b/go/ql/lib/ext/regexp.model.json new file mode 100644 index 000000000000..8d973b7cc4dc --- /dev/null +++ b/go/ql/lib/ext/regexp.model.json @@ -0,0 +1,50 @@ +{ + "extensions": [ + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "sinkModel" + }, + "data": [ + ["regexp", "", false, "Compile", "", "", "Argument[0]", "regex-use[c]", "manual"], + ["regexp", "", false, "CompilePOSIX", "", "", "Argument[0]", "regex-use[c]", "manual"], + ["regexp", "", false, "MustCompile", "", "", "Argument[0]", "regex-use[c]", "manual"], + ["regexp", "", false, "MustCompilePOSIX", "", "", "Argument[0]", "regex-use[c]", "manual"], + ["regexp", "", false, "Match", "", "", "Argument[0]", "regex-use[1]", "manual"], + ["regexp", "", false, "MatchReader", "", "", "Argument[0]", "regex-use[1]", "manual"], + ["regexp", "", false, "MatchString", "", "", "Argument[0]", "regex-use[1]", "manual"], + ["regexp", "Regexp", true, "Match", "", "", "Argument[receiver]", "regex-use[0]", "manual"], + ["regexp", "Regexp", true, "MatchReader", "", "", "Argument[receiver]", "regex-use[0]", "manual"], + ["regexp", "Regexp", true, "MatchString", "", "", "Argument[receiver]", "regex-use[0]", "manual"] + ] + }, + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "summaryModel" + }, + "data": [ + ["regexp", "", false, "QuoteMeta", "", "", "Argument[0]", "ReturnValue", "taint", "manual"], + ["regexp", "Regexp", true, "Expand", "", "", "Argument[1..2]", "Argument[0]", "taint", "manual"], + ["regexp", "Regexp", true, "Expand", "", "", "Argument[1..2]", "ReturnValue", "taint", "manual"], + ["regexp", "Regexp", true, "ExpandString", "", "", "Argument[1..2]", "Argument[0]", "taint", "manual"], + ["regexp", "Regexp", true, "ExpandString", "", "", "Argument[1..2]", "ReturnValue", "taint", "manual"], + ["regexp", "Regexp", true, "Find", "", "", "Argument[0]", "ReturnValue", "taint", "manual"], + ["regexp", "Regexp", true, "FindAll", "", "", "Argument[0]", "ReturnValue", "taint", "manual"], + ["regexp", "Regexp", true, "FindAllString", "", "", "Argument[0]", "ReturnValue", "taint", "manual"], + ["regexp", "Regexp", true, "FindAllStringSubmatch", "", "", "Argument[0]", "ReturnValue", "taint", "manual"], + ["regexp", "Regexp", true, "FindAllSubmatch", "", "", "Argument[0]", "ReturnValue", "taint", "manual"], + ["regexp", "Regexp", true, "FindString", "", "", "Argument[0]", "ReturnValue", "taint", "manual"], + ["regexp", "Regexp", true, "FindStringSubmatch", "", "", "Argument[0]", "ReturnValue", "taint", "manual"], + ["regexp", "Regexp", true, "FindSubmatch", "", "", "Argument[0]", "ReturnValue", "taint", "manual"], + ["regexp", "Regexp", true, "ReplaceAll", "", "", "Argument[0..1]", "ReturnValue", "taint", "manual"], + ["regexp", "Regexp", true, "ReplaceAllFunc", "", "", "Argument[0..1]", "ReturnValue", "taint", "manual"], + ["regexp", "Regexp", true, "ReplaceAllLiteral", "", "", "Argument[0..1]", "ReturnValue", "taint", "manual"], + ["regexp", "Regexp", true, "ReplaceAllLiteralString", "", "", "Argument[0..1]", "ReturnValue", "taint", "manual"], + ["regexp", "Regexp", true, "ReplaceAllString", "", "", "Argument[0..1]", "ReturnValue", "taint", "manual"], + ["regexp", "Regexp", true, "ReplaceAllStringFunc", "", "", "Argument[0..1]", "ReturnValue", "taint", "manual"], + ["regexp", "Regexp", true, "Split", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] + ] + } + ] +} diff --git a/go/ql/lib/ext/regexp.model.yml b/go/ql/lib/ext/regexp.model.yml deleted file mode 100644 index 427d708b12e3..000000000000 --- a/go/ql/lib/ext/regexp.model.yml +++ /dev/null @@ -1,39 +0,0 @@ -extensions: - - addsTo: - pack: codeql/go-all - extensible: sinkModel - data: - - ["regexp", "", False, "Compile", "", "", "Argument[0]", "regex-use[c]", "manual"] - - ["regexp", "", False, "CompilePOSIX", "", "", "Argument[0]", "regex-use[c]", "manual"] - - ["regexp", "", False, "MustCompile", "", "", "Argument[0]", "regex-use[c]", "manual"] - - ["regexp", "", False, "MustCompilePOSIX", "", "", "Argument[0]", "regex-use[c]", "manual"] - - ["regexp", "", False, "Match", "", "", "Argument[0]", "regex-use[1]", "manual"] - - ["regexp", "", False, "MatchReader", "", "", "Argument[0]", "regex-use[1]", "manual"] - - ["regexp", "", False, "MatchString", "", "", "Argument[0]", "regex-use[1]", "manual"] - - ["regexp", "Regexp", True, "Match", "", "", "Argument[receiver]", "regex-use[0]", "manual"] - - ["regexp", "Regexp", True, "MatchReader", "", "", "Argument[receiver]", "regex-use[0]", "manual"] - - ["regexp", "Regexp", True, "MatchString", "", "", "Argument[receiver]", "regex-use[0]", "manual"] - - addsTo: - pack: codeql/go-all - extensible: summaryModel - data: - - ["regexp", "", False, "QuoteMeta", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] - - ["regexp", "Regexp", True, "Expand", "", "", "Argument[1..2]", "Argument[0]", "taint", "manual"] - - ["regexp", "Regexp", True, "Expand", "", "", "Argument[1..2]", "ReturnValue", "taint", "manual"] - - ["regexp", "Regexp", True, "ExpandString", "", "", "Argument[1..2]", "Argument[0]", "taint", "manual"] - - ["regexp", "Regexp", True, "ExpandString", "", "", "Argument[1..2]", "ReturnValue", "taint", "manual"] - - ["regexp", "Regexp", True, "Find", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] - - ["regexp", "Regexp", True, "FindAll", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] - - ["regexp", "Regexp", True, "FindAllString", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] - - ["regexp", "Regexp", True, "FindAllStringSubmatch", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] - - ["regexp", "Regexp", True, "FindAllSubmatch", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] - - ["regexp", "Regexp", True, "FindString", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] - - ["regexp", "Regexp", True, "FindStringSubmatch", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] - - ["regexp", "Regexp", True, "FindSubmatch", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] - - ["regexp", "Regexp", True, "ReplaceAll", "", "", "Argument[0..1]", "ReturnValue", "taint", "manual"] - - ["regexp", "Regexp", True, "ReplaceAllFunc", "", "", "Argument[0..1]", "ReturnValue", "taint", "manual"] - - ["regexp", "Regexp", True, "ReplaceAllLiteral", "", "", "Argument[0..1]", "ReturnValue", "taint", "manual"] - - ["regexp", "Regexp", True, "ReplaceAllLiteralString", "", "", "Argument[0..1]", "ReturnValue", "taint", "manual"] - - ["regexp", "Regexp", True, "ReplaceAllString", "", "", "Argument[0..1]", "ReturnValue", "taint", "manual"] - - ["regexp", "Regexp", True, "ReplaceAllStringFunc", "", "", "Argument[0..1]", "ReturnValue", "taint", "manual"] - - ["regexp", "Regexp", True, "Split", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] diff --git a/go/ql/lib/ext/slices.model.json b/go/ql/lib/ext/slices.model.json new file mode 100644 index 000000000000..ee145b90f8e0 --- /dev/null +++ b/go/ql/lib/ext/slices.model.json @@ -0,0 +1,38 @@ +{ + "extensions": [ + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "summaryModel" + }, + "data": [ + // All should be modeled when we have a way to model iterators + // AppendSec should be modeled when we have a way to model iterators + // Backward should be modeled when we have a way to model iterators + // Chunk should be modeled when we have a way to model iterators + ["slices", "", false, "Clip", "", "", "Argument[0].ArrayElement", "ReturnValue.ArrayElement", "value", "manual"], + ["slices", "", false, "Clone", "", "", "Argument[0].ArrayElement", "ReturnValue.ArrayElement", "value", "manual"], + // Collect should be modeled when we have a way to model iterators + ["slices", "", false, "Compact", "", "", "Argument[0].ArrayElement", "ReturnValue.ArrayElement", "value", "manual"], + ["slices", "", false, "CompactFunc", "", "", "Argument[0].ArrayElement", "ReturnValue.ArrayElement", "value", "manual"], + ["slices", "", false, "Concat", "", "", "Argument[0].ArrayElement.ArrayElement", "ReturnValue.ArrayElement", "value", "manual"], + ["slices", "", false, "Delete", "", "", "Argument[0].ArrayElement", "ReturnValue.ArrayElement", "value", "manual"], + ["slices", "", false, "DeleteFunc", "", "", "Argument[0].ArrayElement", "ReturnValue.ArrayElement", "value", "manual"], + ["slices", "", false, "Grow", "", "", "Argument[0].ArrayElement", "ReturnValue.ArrayElement", "value", "manual"], + ["slices", "", false, "Insert", "", "", "Argument[0].ArrayElement", "ReturnValue.ArrayElement", "value", "manual"], + ["slices", "", false, "Insert", "", "", "Argument[2].ArrayElement", "ReturnValue.ArrayElement", "value", "manual"], + ["slices", "", false, "Max", "", "", "Argument[0].ArrayElement", "ReturnValue", "value", "manual"], + ["slices", "", false, "MaxFunc", "", "", "Argument[0].ArrayElement", "ReturnValue", "value", "manual"], + ["slices", "", false, "Min", "", "", "Argument[0].ArrayElement", "ReturnValue", "value", "manual"], + ["slices", "", false, "MinFunc", "", "", "Argument[0].ArrayElement", "ReturnValue", "value", "manual"], + ["slices", "", false, "Repeat", "", "", "Argument[0].ArrayElement", "ReturnValue.ArrayElement", "value", "manual"], + ["slices", "", false, "Replace", "", "", "Argument[0].ArrayElement", "ReturnValue.ArrayElement", "value", "manual"], + ["slices", "", false, "Replace", "", "", "Argument[3].ArrayElement", "ReturnValue.ArrayElement", "value", "manual"] + ] + } + ] +} +// Sorted should be modeled when we have a way to model iterators +// SortedFunc should be modeled when we have a way to model iterators +// SortedStableFunc should be modeled when we have a way to model iterators +// Values should be modeled when we have a way to model iterators diff --git a/go/ql/lib/ext/slices.model.yml b/go/ql/lib/ext/slices.model.yml deleted file mode 100644 index 2023aeb3db23..000000000000 --- a/go/ql/lib/ext/slices.model.yml +++ /dev/null @@ -1,31 +0,0 @@ -extensions: - - addsTo: - pack: codeql/go-all - extensible: summaryModel - data: - # All should be modeled when we have a way to model iterators - # AppendSec should be modeled when we have a way to model iterators - # Backward should be modeled when we have a way to model iterators - # Chunk should be modeled when we have a way to model iterators - - ["slices", "", False, "Clip", "", "", "Argument[0].ArrayElement", "ReturnValue.ArrayElement", "value", "manual"] - - ["slices", "", False, "Clone", "", "", "Argument[0].ArrayElement", "ReturnValue.ArrayElement", "value", "manual"] - # Collect should be modeled when we have a way to model iterators - - ["slices", "", False, "Compact", "", "", "Argument[0].ArrayElement", "ReturnValue.ArrayElement", "value", "manual"] - - ["slices", "", False, "CompactFunc", "", "", "Argument[0].ArrayElement", "ReturnValue.ArrayElement", "value", "manual"] - - ["slices", "", False, "Concat", "", "", "Argument[0].ArrayElement.ArrayElement", "ReturnValue.ArrayElement", "value", "manual"] - - ["slices", "", False, "Delete", "", "", "Argument[0].ArrayElement", "ReturnValue.ArrayElement", "value", "manual"] - - ["slices", "", False, "DeleteFunc", "", "", "Argument[0].ArrayElement", "ReturnValue.ArrayElement", "value", "manual"] - - ["slices", "", False, "Grow", "", "", "Argument[0].ArrayElement", "ReturnValue.ArrayElement", "value", "manual"] - - ["slices", "", False, "Insert", "", "", "Argument[0].ArrayElement", "ReturnValue.ArrayElement", "value", "manual"] - - ["slices", "", False, "Insert", "", "", "Argument[2].ArrayElement", "ReturnValue.ArrayElement", "value", "manual"] - - ["slices", "", False, "Max", "", "", "Argument[0].ArrayElement", "ReturnValue", "value", "manual"] - - ["slices", "", False, "MaxFunc", "", "", "Argument[0].ArrayElement", "ReturnValue", "value", "manual"] - - ["slices", "", False, "Min", "", "", "Argument[0].ArrayElement", "ReturnValue", "value", "manual"] - - ["slices", "", False, "MinFunc", "", "", "Argument[0].ArrayElement", "ReturnValue", "value", "manual"] - - ["slices", "", False, "Repeat", "", "", "Argument[0].ArrayElement", "ReturnValue.ArrayElement", "value", "manual"] - - ["slices", "", False, "Replace", "", "", "Argument[0].ArrayElement", "ReturnValue.ArrayElement", "value", "manual"] - - ["slices", "", False, "Replace", "", "", "Argument[3].ArrayElement", "ReturnValue.ArrayElement", "value", "manual"] - # Sorted should be modeled when we have a way to model iterators - # SortedFunc should be modeled when we have a way to model iterators - # SortedStableFunc should be modeled when we have a way to model iterators - # Values should be modeled when we have a way to model iterators diff --git a/go/ql/lib/ext/sort.model.json b/go/ql/lib/ext/sort.model.json new file mode 100644 index 000000000000..426729f3fd16 --- /dev/null +++ b/go/ql/lib/ext/sort.model.json @@ -0,0 +1,13 @@ +{ + "extensions": [ + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "summaryModel" + }, + "data": [ + ["sort", "", false, "Reverse", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] + ] + } + ] +} diff --git a/go/ql/lib/ext/sort.model.yml b/go/ql/lib/ext/sort.model.yml deleted file mode 100644 index 36d0070de66d..000000000000 --- a/go/ql/lib/ext/sort.model.yml +++ /dev/null @@ -1,6 +0,0 @@ -extensions: - - addsTo: - pack: codeql/go-all - extensible: summaryModel - data: - - ["sort", "", False, "Reverse", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] diff --git a/go/ql/lib/ext/strconv.model.json b/go/ql/lib/ext/strconv.model.json new file mode 100644 index 000000000000..6d64a51fe1bd --- /dev/null +++ b/go/ql/lib/ext/strconv.model.json @@ -0,0 +1,21 @@ +{ + "extensions": [ + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "summaryModel" + }, + "data": [ + ["strconv", "", false, "AppendQuote", "", "", "Argument[0..1]", "ReturnValue", "taint", "manual"], + ["strconv", "", false, "AppendQuoteToASCII", "", "", "Argument[0..1]", "ReturnValue", "taint", "manual"], + ["strconv", "", false, "AppendQuoteToGraphic", "", "", "Argument[0..1]", "ReturnValue", "taint", "manual"], + ["strconv", "", false, "Quote", "", "", "Argument[0]", "ReturnValue", "taint", "manual"], + ["strconv", "", false, "QuoteToASCII", "", "", "Argument[0]", "ReturnValue", "taint", "manual"], + ["strconv", "", false, "QuoteToGraphic", "", "", "Argument[0]", "ReturnValue", "taint", "manual"], + ["strconv", "", false, "QuotedPrefix", "", "", "Argument[0]", "ReturnValue[0]", "taint", "manual"], + ["strconv", "", false, "Unquote", "", "", "Argument[0]", "ReturnValue[0]", "taint", "manual"], + ["strconv", "", false, "UnquoteChar", "", "", "Argument[0]", "ReturnValue[2]", "taint", "manual"] + ] + } + ] +} diff --git a/go/ql/lib/ext/strconv.model.yml b/go/ql/lib/ext/strconv.model.yml deleted file mode 100644 index 65203b121064..000000000000 --- a/go/ql/lib/ext/strconv.model.yml +++ /dev/null @@ -1,14 +0,0 @@ -extensions: - - addsTo: - pack: codeql/go-all - extensible: summaryModel - data: - - ["strconv", "", False, "AppendQuote", "", "", "Argument[0..1]", "ReturnValue", "taint", "manual"] - - ["strconv", "", False, "AppendQuoteToASCII", "", "", "Argument[0..1]", "ReturnValue", "taint", "manual"] - - ["strconv", "", False, "AppendQuoteToGraphic", "", "", "Argument[0..1]", "ReturnValue", "taint", "manual"] - - ["strconv", "", False, "Quote", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] - - ["strconv", "", False, "QuoteToASCII", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] - - ["strconv", "", False, "QuoteToGraphic", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] - - ["strconv", "", False, "QuotedPrefix", "", "", "Argument[0]", "ReturnValue[0]", "taint", "manual"] - - ["strconv", "", False, "Unquote", "", "", "Argument[0]", "ReturnValue[0]", "taint", "manual"] - - ["strconv", "", False, "UnquoteChar", "", "", "Argument[0]", "ReturnValue[2]", "taint", "manual"] diff --git a/go/ql/lib/ext/strings.model.json b/go/ql/lib/ext/strings.model.json new file mode 100644 index 000000000000..46e6ac721c6a --- /dev/null +++ b/go/ql/lib/ext/strings.model.json @@ -0,0 +1,59 @@ +{ + "extensions": [ + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "summaryModel" + }, + "data": [ + ["strings", "", false, "Clone", "", "", "Argument[0]", "ReturnValue", "value", "manual"], + ["strings", "", false, "Cut", "", "", "Argument[0]", "ReturnValue[0..1]", "taint", "manual"], + ["strings", "", false, "CutLast", "", "", "Argument[0]", "ReturnValue[0..1]", "taint", "manual"], + ["strings", "", false, "CutPrefix", "", "", "Argument[0]", "ReturnValue[0]", "taint", "manual"], + ["strings", "", false, "CutSuffix", "", "", "Argument[0]", "ReturnValue[0]", "taint", "manual"], + ["strings", "", false, "Fields", "", "", "Argument[0]", "ReturnValue.ArrayElement", "taint", "manual"], + ["strings", "", false, "FieldsFunc", "", "", "Argument[0]", "ReturnValue.ArrayElement", "taint", "manual"], + ["strings", "", false, "Join", "", "", "Argument[0].ArrayElement", "ReturnValue", "taint", "manual"], + ["strings", "", false, "Join", "", "", "Argument[1]", "ReturnValue", "taint", "manual"], + ["strings", "", false, "Map", "", "", "Argument[1]", "ReturnValue", "taint", "manual"], + ["strings", "", false, "NewReader", "", "", "Argument[0]", "ReturnValue", "taint", "manual"], + ["strings", "", false, "Repeat", "", "", "Argument[0]", "ReturnValue", "taint", "manual"], + ["strings", "", false, "Replace", "", "", "Argument[0]", "ReturnValue", "taint", "manual"], + ["strings", "", false, "Replace", "", "", "Argument[2]", "ReturnValue", "taint", "manual"], + ["strings", "", false, "ReplaceAll", "", "", "Argument[0]", "ReturnValue", "taint", "manual"], + ["strings", "", false, "ReplaceAll", "", "", "Argument[2]", "ReturnValue", "taint", "manual"], + ["strings", "", false, "Split", "", "", "Argument[0]", "ReturnValue", "taint", "manual"], + ["strings", "", false, "SplitAfter", "", "", "Argument[0]", "ReturnValue", "taint", "manual"], + ["strings", "", false, "SplitAfterN", "", "", "Argument[0]", "ReturnValue", "taint", "manual"], + ["strings", "", false, "SplitN", "", "", "Argument[0]", "ReturnValue", "taint", "manual"], + ["strings", "", false, "Title", "", "", "Argument[0]", "ReturnValue", "taint", "manual"], + ["strings", "", false, "ToLower", "", "", "Argument[0]", "ReturnValue", "taint", "manual"], + ["strings", "", false, "ToLowerSpecial", "", "", "Argument[1]", "ReturnValue", "taint", "manual"], + ["strings", "", false, "ToTitle", "", "", "Argument[0]", "ReturnValue", "taint", "manual"], + ["strings", "", false, "ToTitleSpecial", "", "", "Argument[1]", "ReturnValue", "taint", "manual"], + ["strings", "", false, "ToUpper", "", "", "Argument[0]", "ReturnValue", "taint", "manual"], + ["strings", "", false, "ToUpperSpecial", "", "", "Argument[1]", "ReturnValue", "taint", "manual"], + ["strings", "", false, "ToValidUTF8", "", "", "Argument[0..1]", "ReturnValue", "taint", "manual"], + ["strings", "", false, "Trim", "", "", "Argument[0]", "ReturnValue", "taint", "manual"], + ["strings", "", false, "TrimFunc", "", "", "Argument[0]", "ReturnValue", "taint", "manual"], + ["strings", "", false, "TrimLeft", "", "", "Argument[0]", "ReturnValue", "taint", "manual"], + ["strings", "", false, "TrimLeftFunc", "", "", "Argument[0]", "ReturnValue", "taint", "manual"], + ["strings", "", false, "TrimPrefix", "", "", "Argument[0]", "ReturnValue", "taint", "manual"], + ["strings", "", false, "TrimRight", "", "", "Argument[0]", "ReturnValue", "taint", "manual"], + ["strings", "", false, "TrimRightFunc", "", "", "Argument[0]", "ReturnValue", "taint", "manual"], + ["strings", "", false, "TrimSpace", "", "", "Argument[0]", "ReturnValue", "taint", "manual"], + ["strings", "", false, "TrimSuffix", "", "", "Argument[0]", "ReturnValue", "taint", "manual"], + ["strings", "Builder", true, "String", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"], + ["strings", "Builder", true, "WriteByte", "", "", "Argument[0]", "Argument[receiver]", "taint", "manual"], + ["strings", "Builder", true, "WriteRune", "", "", "Argument[0]", "Argument[receiver]", "taint", "manual"], + ["strings", "Reader", true, "ReadByte", "", "", "Argument[receiver]", "ReturnValue[0]", "taint", "manual"], + ["strings", "Reader", true, "ReadRune", "", "", "Argument[receiver]", "ReturnValue[0]", "taint", "manual"], + ["strings", "Reader", true, "Reset", "", "", "Argument[0]", "Argument[receiver]", "taint", "manual"], + ["strings", "Replacer", true, "Replace", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"], + ["strings", "Replacer", true, "Replace", "", "", "Argument[0]", "ReturnValue", "taint", "manual"], + ["strings", "Replacer", true, "WriteString", "", "", "Argument[receiver]", "Argument[0]", "taint", "manual"], + ["strings", "Replacer", true, "WriteString", "", "", "Argument[1]", "Argument[0]", "taint", "manual"] + ] + } + ] +} diff --git a/go/ql/lib/ext/strings.model.yml b/go/ql/lib/ext/strings.model.yml deleted file mode 100644 index 4a6d852baab4..000000000000 --- a/go/ql/lib/ext/strings.model.yml +++ /dev/null @@ -1,52 +0,0 @@ -extensions: - - addsTo: - pack: codeql/go-all - extensible: summaryModel - data: - - ["strings", "", False, "Clone", "", "", "Argument[0]", "ReturnValue", "value", "manual"] - - ["strings", "", False, "Cut", "", "", "Argument[0]", "ReturnValue[0..1]", "taint", "manual"] - - ["strings", "", False, "CutLast", "", "", "Argument[0]", "ReturnValue[0..1]", "taint", "manual"] - - ["strings", "", False, "CutPrefix", "", "", "Argument[0]", "ReturnValue[0]", "taint", "manual"] - - ["strings", "", False, "CutSuffix", "", "", "Argument[0]", "ReturnValue[0]", "taint", "manual"] - - ["strings", "", False, "Fields", "", "", "Argument[0]", "ReturnValue.ArrayElement", "taint", "manual"] - - ["strings", "", False, "FieldsFunc", "", "", "Argument[0]", "ReturnValue.ArrayElement", "taint", "manual"] - - ["strings", "", False, "Join", "", "", "Argument[0].ArrayElement", "ReturnValue", "taint", "manual"] - - ["strings", "", False, "Join", "", "", "Argument[1]", "ReturnValue", "taint", "manual"] - - ["strings", "", False, "Map", "", "", "Argument[1]", "ReturnValue", "taint", "manual"] - - ["strings", "", False, "NewReader", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] - - ["strings", "", False, "Repeat", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] - - ["strings", "", False, "Replace", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] - - ["strings", "", False, "Replace", "", "", "Argument[2]", "ReturnValue", "taint", "manual"] - - ["strings", "", False, "ReplaceAll", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] - - ["strings", "", False, "ReplaceAll", "", "", "Argument[2]", "ReturnValue", "taint", "manual"] - - ["strings", "", False, "Split", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] - - ["strings", "", False, "SplitAfter", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] - - ["strings", "", False, "SplitAfterN", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] - - ["strings", "", False, "SplitN", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] - - ["strings", "", False, "Title", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] - - ["strings", "", False, "ToLower", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] - - ["strings", "", False, "ToLowerSpecial", "", "", "Argument[1]", "ReturnValue", "taint", "manual"] - - ["strings", "", False, "ToTitle", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] - - ["strings", "", False, "ToTitleSpecial", "", "", "Argument[1]", "ReturnValue", "taint", "manual"] - - ["strings", "", False, "ToUpper", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] - - ["strings", "", False, "ToUpperSpecial", "", "", "Argument[1]", "ReturnValue", "taint", "manual"] - - ["strings", "", False, "ToValidUTF8", "", "", "Argument[0..1]", "ReturnValue", "taint", "manual"] - - ["strings", "", False, "Trim", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] - - ["strings", "", False, "TrimFunc", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] - - ["strings", "", False, "TrimLeft", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] - - ["strings", "", False, "TrimLeftFunc", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] - - ["strings", "", False, "TrimPrefix", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] - - ["strings", "", False, "TrimRight", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] - - ["strings", "", False, "TrimRightFunc", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] - - ["strings", "", False, "TrimSpace", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] - - ["strings", "", False, "TrimSuffix", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] - - ["strings", "Builder", True, "String", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] - - ["strings", "Builder", True, "WriteByte", "", "", "Argument[0]", "Argument[receiver]", "taint", "manual"] - - ["strings", "Builder", True, "WriteRune", "", "", "Argument[0]", "Argument[receiver]", "taint", "manual"] - - ["strings", "Reader", True, "ReadByte", "", "", "Argument[receiver]", "ReturnValue[0]", "taint", "manual"] - - ["strings", "Reader", True, "ReadRune", "", "", "Argument[receiver]", "ReturnValue[0]", "taint", "manual"] - - ["strings", "Reader", True, "Reset", "", "", "Argument[0]", "Argument[receiver]", "taint", "manual"] - - ["strings", "Replacer", True, "Replace", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] - - ["strings", "Replacer", True, "Replace", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] - - ["strings", "Replacer", True, "WriteString", "", "", "Argument[receiver]", "Argument[0]", "taint", "manual"] - - ["strings", "Replacer", True, "WriteString", "", "", "Argument[1]", "Argument[0]", "taint", "manual"] diff --git a/go/ql/lib/ext/sync.atomic.model.json b/go/ql/lib/ext/sync.atomic.model.json new file mode 100644 index 000000000000..ef851f395e10 --- /dev/null +++ b/go/ql/lib/ext/sync.atomic.model.json @@ -0,0 +1,36 @@ +{ + "extensions": [ + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "summaryModel" + }, + "data": [ + ["sync/atomic", "", false, "AddUintptr", "", "", "Argument[1]", "Argument[0]", "taint", "manual"], + ["sync/atomic", "", false, "AddUintptr", "", "", "Argument[1]", "ReturnValue", "taint", "manual"], + ["sync/atomic", "", false, "CompareAndSwapPointer", "", "", "Argument[2]", "Argument[0]", "taint", "manual"], + ["sync/atomic", "", false, "CompareAndSwapUintptr", "", "", "Argument[2]", "Argument[0]", "taint", "manual"], + ["sync/atomic", "", false, "LoadPointer", "", "", "Argument[0]", "ReturnValue", "taint", "manual"], + ["sync/atomic", "", false, "LoadUintptr", "", "", "Argument[0]", "ReturnValue", "taint", "manual"], + ["sync/atomic", "", false, "StorePointer", "", "", "Argument[1]", "Argument[0]", "taint", "manual"], + ["sync/atomic", "", false, "StoreUintptr", "", "", "Argument[1]", "Argument[0]", "taint", "manual"], + ["sync/atomic", "", false, "SwapPointer", "", "", "Argument[1]", "Argument[0]", "taint", "manual"], + ["sync/atomic", "", false, "SwapPointer", "", "", "Argument[0]", "ReturnValue", "taint", "manual"], + ["sync/atomic", "", false, "SwapUintptr", "", "", "Argument[1]", "Argument[0]", "taint", "manual"], + ["sync/atomic", "", false, "SwapUintptr", "", "", "Argument[0]", "ReturnValue", "taint", "manual"], + ["sync/atomic", "Pointer", true, "Load", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"], + ["sync/atomic", "Pointer", true, "Store", "", "", "Argument[0]", "Argument[receiver]", "taint", "manual"], + ["sync/atomic", "Pointer", true, "Swap", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"], + ["sync/atomic", "Pointer", true, "Swap", "", "", "Argument[0]", "Argument[receiver]", "taint", "manual"], + ["sync/atomic", "Uintptr", true, "Load", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"], + ["sync/atomic", "Uintptr", true, "Store", "", "", "Argument[0]", "Argument[receiver]", "taint", "manual"], + ["sync/atomic", "Uintptr", true, "Swap", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"], + ["sync/atomic", "Uintptr", true, "Swap", "", "", "Argument[0]", "Argument[receiver]", "taint", "manual"], + ["sync/atomic", "Value", true, "Load", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"], + ["sync/atomic", "Value", true, "Store", "", "", "Argument[0]", "Argument[receiver]", "taint", "manual"], + ["sync/atomic", "Value", true, "Swap", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"], + ["sync/atomic", "Value", true, "Swap", "", "", "Argument[0]", "Argument[receiver]", "taint", "manual"] + ] + } + ] +} diff --git a/go/ql/lib/ext/sync.atomic.model.yml b/go/ql/lib/ext/sync.atomic.model.yml deleted file mode 100644 index 1dd7d995566a..000000000000 --- a/go/ql/lib/ext/sync.atomic.model.yml +++ /dev/null @@ -1,29 +0,0 @@ -extensions: - - addsTo: - pack: codeql/go-all - extensible: summaryModel - data: - - ["sync/atomic", "", False, "AddUintptr", "", "", "Argument[1]", "Argument[0]", "taint", "manual"] - - ["sync/atomic", "", False, "AddUintptr", "", "", "Argument[1]", "ReturnValue", "taint", "manual"] - - ["sync/atomic", "", False, "CompareAndSwapPointer", "", "", "Argument[2]", "Argument[0]", "taint", "manual"] - - ["sync/atomic", "", False, "CompareAndSwapUintptr", "", "", "Argument[2]", "Argument[0]", "taint", "manual"] - - ["sync/atomic", "", False, "LoadPointer", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] - - ["sync/atomic", "", False, "LoadUintptr", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] - - ["sync/atomic", "", False, "StorePointer", "", "", "Argument[1]", "Argument[0]", "taint", "manual"] - - ["sync/atomic", "", False, "StoreUintptr", "", "", "Argument[1]", "Argument[0]", "taint", "manual"] - - ["sync/atomic", "", False, "SwapPointer", "", "", "Argument[1]", "Argument[0]", "taint", "manual"] - - ["sync/atomic", "", False, "SwapPointer", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] - - ["sync/atomic", "", False, "SwapUintptr", "", "", "Argument[1]", "Argument[0]", "taint", "manual"] - - ["sync/atomic", "", False, "SwapUintptr", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] - - ["sync/atomic", "Pointer", True, "Load", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] - - ["sync/atomic", "Pointer", True, "Store", "", "", "Argument[0]", "Argument[receiver]", "taint", "manual"] - - ["sync/atomic", "Pointer", True, "Swap", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] - - ["sync/atomic", "Pointer", True, "Swap", "", "", "Argument[0]", "Argument[receiver]", "taint", "manual"] - - ["sync/atomic", "Uintptr", True, "Load", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] - - ["sync/atomic", "Uintptr", True, "Store", "", "", "Argument[0]", "Argument[receiver]", "taint", "manual"] - - ["sync/atomic", "Uintptr", True, "Swap", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] - - ["sync/atomic", "Uintptr", True, "Swap", "", "", "Argument[0]", "Argument[receiver]", "taint", "manual"] - - ["sync/atomic", "Value", True, "Load", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] - - ["sync/atomic", "Value", True, "Store", "", "", "Argument[0]", "Argument[receiver]", "taint", "manual"] - - ["sync/atomic", "Value", True, "Swap", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] - - ["sync/atomic", "Value", True, "Swap", "", "", "Argument[0]", "Argument[receiver]", "taint", "manual"] diff --git a/go/ql/lib/ext/sync.model.json b/go/ql/lib/ext/sync.model.json new file mode 100644 index 000000000000..56360ba0e7d1 --- /dev/null +++ b/go/ql/lib/ext/sync.model.json @@ -0,0 +1,22 @@ +{ + "extensions": [ + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "summaryModel" + }, + "data": [ + ["sync", "Map", true, "CompareAndSwap", "", "", "Argument[2]", "Argument[receiver]", "taint", "manual"], + ["sync", "Map", true, "Load", "", "", "Argument[receiver]", "ReturnValue[0]", "taint", "manual"], + ["sync", "Map", true, "LoadOrStore", "", "", "Argument[receiver]", "ReturnValue[0]", "taint", "manual"], + ["sync", "Map", true, "LoadOrStore", "", "", "Argument[1]", "Argument[receiver]", "taint", "manual"], + ["sync", "Map", true, "LoadOrStore", "", "", "Argument[1]", "ReturnValue[0]", "taint", "manual"], + ["sync", "Map", true, "Store", "", "", "Argument[1]", "Argument[receiver]", "taint", "manual"], + ["sync", "Map", true, "Swap", "", "", "Argument[receiver]", "ReturnValue[0]", "taint", "manual"], + ["sync", "Map", true, "Swap", "", "", "Argument[1]", "Argument[receiver]", "taint", "manual"], + ["sync", "Pool", true, "Get", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"], + ["sync", "Pool", true, "Put", "", "", "Argument[0]", "Argument[receiver]", "taint", "manual"] + ] + } + ] +} diff --git a/go/ql/lib/ext/sync.model.yml b/go/ql/lib/ext/sync.model.yml deleted file mode 100644 index 5a318552f531..000000000000 --- a/go/ql/lib/ext/sync.model.yml +++ /dev/null @@ -1,15 +0,0 @@ -extensions: - - addsTo: - pack: codeql/go-all - extensible: summaryModel - data: - - ["sync", "Map", True, "CompareAndSwap", "", "", "Argument[2]", "Argument[receiver]", "taint", "manual"] - - ["sync", "Map", True, "Load", "", "", "Argument[receiver]", "ReturnValue[0]", "taint", "manual"] - - ["sync", "Map", True, "LoadOrStore", "", "", "Argument[receiver]", "ReturnValue[0]", "taint", "manual"] - - ["sync", "Map", True, "LoadOrStore", "", "", "Argument[1]", "Argument[receiver]", "taint", "manual"] - - ["sync", "Map", True, "LoadOrStore", "", "", "Argument[1]", "ReturnValue[0]", "taint", "manual"] - - ["sync", "Map", True, "Store", "", "", "Argument[1]", "Argument[receiver]", "taint", "manual"] - - ["sync", "Map", True, "Swap", "", "", "Argument[receiver]", "ReturnValue[0]", "taint", "manual"] - - ["sync", "Map", True, "Swap", "", "", "Argument[1]", "Argument[receiver]", "taint", "manual"] - - ["sync", "Pool", True, "Get", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] - - ["sync", "Pool", True, "Put", "", "", "Argument[0]", "Argument[receiver]", "taint", "manual"] diff --git a/go/ql/lib/ext/syscall.model.json b/go/ql/lib/ext/syscall.model.json new file mode 100644 index 000000000000..1e4010a6a4e5 --- /dev/null +++ b/go/ql/lib/ext/syscall.model.json @@ -0,0 +1,43 @@ +{ + "extensions": [ + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "sinkModel" + }, + "data": [ + ["syscall", "", false, "Exec", "", "", "Argument[0]", "command-injection", "manual"], + ["syscall", "", false, "ForkExec", "", "", "Argument[0]", "command-injection", "manual"], + ["syscall", "", false, "StartProcess", "", "", "Argument[0]", "command-injection", "manual"], + ["syscall", "", false, "CreateProcess", "", "", "Argument[0]", "command-injection", "manual"], + ["syscall", "", false, "CreateProcessAsUser", "", "", "Argument[1]", "command-injection", "manual"] + ] + }, + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "summaryModel" + }, + "data": [ + ["syscall", "", false, "BytePtrFromString", "", "", "Argument[0]", "ReturnValue[0]", "taint", "manual"], + ["syscall", "", false, "ByteSliceFromString", "", "", "Argument[0]", "ReturnValue[0]", "taint", "manual"], + ["syscall", "", false, "StringBytePtr", "", "", "Argument[0]", "ReturnValue", "taint", "manual"], + ["syscall", "", false, "StringByteSlice", "", "", "Argument[0]", "ReturnValue", "taint", "manual"], + ["syscall", "", false, "StringSlicePtr", "", "", "Argument[0]", "ReturnValue", "taint", "manual"], + ["syscall", "Conn", true, "SyscallConn", "", "", "Argument[receiver]", "ReturnValue[0]", "taint", "manual"], + ["syscall", "RawConn", true, "Read", "", "", "Argument[receiver]", "Argument[0]", "taint", "manual"], + ["syscall", "RawConn", true, "Write", "", "", "Argument[0]", "Argument[receiver]", "taint", "manual"] + ] + }, + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "sourceModel" + }, + "data": [ + ["syscall", "", false, "Environ", "", "", "ReturnValue", "environment", "manual"], + ["syscall", "", false, "Getenv", "", "", "ReturnValue[0]", "environment", "manual"] + ] + } + ] +} diff --git a/go/ql/lib/ext/syscall.model.yml b/go/ql/lib/ext/syscall.model.yml deleted file mode 100644 index 948cca3e2987..000000000000 --- a/go/ql/lib/ext/syscall.model.yml +++ /dev/null @@ -1,28 +0,0 @@ -extensions: - - addsTo: - pack: codeql/go-all - extensible: sinkModel - data: - - ["syscall", "", False, "Exec", "", "", "Argument[0]", "command-injection", "manual"] - - ["syscall", "", False, "ForkExec", "", "", "Argument[0]", "command-injection", "manual"] - - ["syscall", "", False, "StartProcess", "", "", "Argument[0]", "command-injection", "manual"] - - ["syscall", "", False, "CreateProcess", "", "", "Argument[0]", "command-injection", "manual"] - - ["syscall", "", False, "CreateProcessAsUser", "", "", "Argument[1]", "command-injection", "manual"] - - addsTo: - pack: codeql/go-all - extensible: summaryModel - data: - - ["syscall", "", False, "BytePtrFromString", "", "", "Argument[0]", "ReturnValue[0]", "taint", "manual"] - - ["syscall", "", False, "ByteSliceFromString", "", "", "Argument[0]", "ReturnValue[0]", "taint", "manual"] - - ["syscall", "", False, "StringBytePtr", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] - - ["syscall", "", False, "StringByteSlice", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] - - ["syscall", "", False, "StringSlicePtr", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] - - ["syscall", "Conn", True, "SyscallConn", "", "", "Argument[receiver]", "ReturnValue[0]", "taint", "manual"] - - ["syscall", "RawConn", True, "Read", "", "", "Argument[receiver]", "Argument[0]", "taint", "manual"] - - ["syscall", "RawConn", True, "Write", "", "", "Argument[0]", "Argument[receiver]", "taint", "manual"] - - addsTo: - pack: codeql/go-all - extensible: sourceModel - data: - - ["syscall", "", False, "Environ", "", "", "ReturnValue", "environment", "manual"] - - ["syscall", "", False, "Getenv", "", "", "ReturnValue[0]", "environment", "manual"] diff --git a/go/ql/lib/ext/text.scanner.model.json b/go/ql/lib/ext/text.scanner.model.json new file mode 100644 index 000000000000..c5498792b34e --- /dev/null +++ b/go/ql/lib/ext/text.scanner.model.json @@ -0,0 +1,15 @@ +{ + "extensions": [ + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "summaryModel" + }, + "data": [ + ["text/scanner", "Scanner", true, "Init", "", "", "Argument[0]", "Argument[receiver]", "taint", "manual"], + ["text/scanner", "Scanner", true, "Init", "", "", "Argument[0]", "ReturnValue", "taint", "manual"], + ["text/scanner", "Scanner", true, "TokenText", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] + ] + } + ] +} diff --git a/go/ql/lib/ext/text.scanner.model.yml b/go/ql/lib/ext/text.scanner.model.yml deleted file mode 100644 index 8eeb48740d15..000000000000 --- a/go/ql/lib/ext/text.scanner.model.yml +++ /dev/null @@ -1,8 +0,0 @@ -extensions: - - addsTo: - pack: codeql/go-all - extensible: summaryModel - data: - - ["text/scanner", "Scanner", True, "Init", "", "", "Argument[0]", "Argument[receiver]", "taint", "manual"] - - ["text/scanner", "Scanner", True, "Init", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] - - ["text/scanner", "Scanner", True, "TokenText", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] diff --git a/go/ql/lib/ext/text.tabwriter.model.json b/go/ql/lib/ext/text.tabwriter.model.json new file mode 100644 index 000000000000..06a7c0bbbc3d --- /dev/null +++ b/go/ql/lib/ext/text.tabwriter.model.json @@ -0,0 +1,13 @@ +{ + "extensions": [ + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "summaryModel" + }, + "data": [ + ["text/tabwriter", "Writer", true, "Init", "", "", "Argument[receiver]", "Argument[0]", "taint", "manual"] + ] + } + ] +} diff --git a/go/ql/lib/ext/text.tabwriter.model.yml b/go/ql/lib/ext/text.tabwriter.model.yml deleted file mode 100644 index ae29881c309b..000000000000 --- a/go/ql/lib/ext/text.tabwriter.model.yml +++ /dev/null @@ -1,6 +0,0 @@ -extensions: - - addsTo: - pack: codeql/go-all - extensible: summaryModel - data: - - ["text/tabwriter", "Writer", True, "Init", "", "", "Argument[receiver]", "Argument[0]", "taint", "manual"] diff --git a/go/ql/lib/ext/text.template.model.json b/go/ql/lib/ext/text.template.model.json new file mode 100644 index 000000000000..1671ebb85b18 --- /dev/null +++ b/go/ql/lib/ext/text.template.model.json @@ -0,0 +1,18 @@ +{ + "extensions": [ + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "summaryModel" + }, + "data": [ + ["text/template", "", false, "HTMLEscape", "", "", "Argument[1]", "Argument[0]", "taint", "manual"], + ["text/template", "", false, "HTMLEscapeString", "", "", "Argument[0]", "ReturnValue", "taint", "manual"], + ["text/template", "", false, "JSEscape", "", "", "Argument[1]", "Argument[0]", "taint", "manual"], + ["text/template", "", false, "JSEscapeString", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] + ] + } + ] +} +// - ["text/template", "Template", True, "Execute", "", "", "Argument[1]", "Argument[0]", "taint", "manual"] # Implemented in QL to provide an arbitrary content read from the input. +// - ["text/template", "Template", True, "ExecuteTemplate", "", "", "Argument[2]", "Argument[0]", "taint", "manual"] # Implemented in QL to provide an arbitrary content read from the input. diff --git a/go/ql/lib/ext/text.template.model.yml b/go/ql/lib/ext/text.template.model.yml deleted file mode 100644 index 3ff0321a43c2..000000000000 --- a/go/ql/lib/ext/text.template.model.yml +++ /dev/null @@ -1,11 +0,0 @@ -extensions: - - addsTo: - pack: codeql/go-all - extensible: summaryModel - data: - - ["text/template", "", False, "HTMLEscape", "", "", "Argument[1]", "Argument[0]", "taint", "manual"] - - ["text/template", "", False, "HTMLEscapeString", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] - - ["text/template", "", False, "JSEscape", "", "", "Argument[1]", "Argument[0]", "taint", "manual"] - - ["text/template", "", False, "JSEscapeString", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] -# - ["text/template", "Template", True, "Execute", "", "", "Argument[1]", "Argument[0]", "taint", "manual"] # Implemented in QL to provide an arbitrary content read from the input. -# - ["text/template", "Template", True, "ExecuteTemplate", "", "", "Argument[2]", "Argument[0]", "taint", "manual"] # Implemented in QL to provide an arbitrary content read from the input. diff --git a/go/ql/lib/ext/weak.model.json b/go/ql/lib/ext/weak.model.json new file mode 100644 index 000000000000..9a27fa36e4d3 --- /dev/null +++ b/go/ql/lib/ext/weak.model.json @@ -0,0 +1,14 @@ +{ + "extensions": [ + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "summaryModel" + }, + "data": [ + ["weak", "", false, "Make", "", "", "Argument[0]", "ReturnValue[0]", "taint", "manual"], + ["weak", "Pointer", false, "Value", "", "", "Argument[receiver]", "ReturnValue[0]", "taint", "manual"] + ] + } + ] +} diff --git a/go/ql/lib/ext/weak.model.yml b/go/ql/lib/ext/weak.model.yml deleted file mode 100644 index 7ae865ce2cb1..000000000000 --- a/go/ql/lib/ext/weak.model.yml +++ /dev/null @@ -1,7 +0,0 @@ -extensions: - - addsTo: - pack: codeql/go-all - extensible: summaryModel - data: - - ["weak", "", False, "Make", "", "", "Argument[0]", "ReturnValue[0]", "taint", "manual"] - - ["weak", "Pointer", False, "Value", "", "", "Argument[receiver]", "ReturnValue[0]", "taint", "manual"] diff --git a/go/ql/lib/ext/xorm.io.xorm.model.json b/go/ql/lib/ext/xorm.io.xorm.model.json new file mode 100644 index 000000000000..6edcb4806453 --- /dev/null +++ b/go/ql/lib/ext/xorm.io.xorm.model.json @@ -0,0 +1,60 @@ +{ + "extensions": [ + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "packageGrouping" + }, + "data": [ + ["xorm", "xorm.io/xorm"], + ["xorm", "github.com/go-xorm/xorm"] + ] + }, + { + "addsTo": { + "pack": "codeql/go-all", + "extensible": "sinkModel" + }, + "data": [ + ["group:xorm", "Engine", true, "Alias", "", "", "Argument[0]", "sql-injection", "manual"], + ["group:xorm", "Engine", true, "And", "", "", "Argument[0]", "sql-injection", "manual"], + // Engine.Exec has to be modeled in QL to select only the first syntactic argument + ["group:xorm", "Engine", true, "GroupBy", "", "", "Argument[0]", "sql-injection", "manual"], + ["group:xorm", "Engine", true, "Having", "", "", "Argument[0]", "sql-injection", "manual"], + ["group:xorm", "Engine", true, "In", "", "", "Argument[0]", "sql-injection", "manual"], + ["group:xorm", "Engine", true, "Join", "", "", "Argument[0..2]", "sql-injection", "manual"], + ["group:xorm", "Engine", true, "NotIn", "", "", "Argument[0]", "sql-injection", "manual"], + ["group:xorm", "Engine", true, "Or", "", "", "Argument[0]", "sql-injection", "manual"], + ["group:xorm", "Engine", true, "OrderBy", "", "", "Argument[0]", "sql-injection", "manual"], + // Engine.Query, Engine.QueryInterface and Engine.QueryString have to be modeled in QL to select only the first syntactic argument + ["group:xorm", "Engine", true, "Select", "", "", "Argument[0]", "sql-injection", "manual"], + ["group:xorm", "Engine", true, "SetExpr", "", "", "Argument[0]", "sql-injection", "manual"], + ["group:xorm", "Engine", true, "SQL", "", "", "Argument[0]", "sql-injection", "manual"], + ["group:xorm", "Engine", true, "Sum", "", "", "Argument[1]", "sql-injection", "manual"], + ["group:xorm", "Engine", true, "Sums", "", "", "Argument[1]", "sql-injection", "manual"], + ["group:xorm", "Engine", true, "SumInt", "", "", "Argument[1]", "sql-injection", "manual"], + ["group:xorm", "Engine", true, "SumsInt", "", "", "Argument[1]", "sql-injection", "manual"], + ["group:xorm", "Engine", true, "Where", "", "", "Argument[0]", "sql-injection", "manual"], + ["group:xorm", "Session", true, "Alias", "", "", "Argument[0]", "sql-injection", "manual"], + ["group:xorm", "Session", true, "And", "", "", "Argument[0]", "sql-injection", "manual"], + // Session.Exec has to be modeled in QL to select only the first syntactic argument + ["group:xorm", "Session", true, "GroupBy", "", "", "Argument[0]", "sql-injection", "manual"], + ["group:xorm", "Session", true, "Having", "", "", "Argument[0]", "sql-injection", "manual"], + ["group:xorm", "Session", true, "In", "", "", "Argument[0]", "sql-injection", "manual"], + ["group:xorm", "Session", true, "Join", "", "", "Argument[0..2]", "sql-injection", "manual"], + ["group:xorm", "Session", true, "NotIn", "", "", "Argument[0]", "sql-injection", "manual"], + ["group:xorm", "Session", true, "Or", "", "", "Argument[0]", "sql-injection", "manual"], + ["group:xorm", "Session", true, "OrderBy", "", "", "Argument[0]", "sql-injection", "manual"], + // Session.Query, Session.QueryInterface and Session.QueryString have to be modeled in QL to select only the first syntactic argument + ["group:xorm", "Session", true, "Select", "", "", "Argument[0]", "sql-injection", "manual"], + ["group:xorm", "Session", true, "SetExpr", "", "", "Argument[0]", "sql-injection", "manual"], + ["group:xorm", "Session", true, "SQL", "", "", "Argument[0]", "sql-injection", "manual"], + ["group:xorm", "Session", true, "Sum", "", "", "Argument[1]", "sql-injection", "manual"], + ["group:xorm", "Session", true, "Sums", "", "", "Argument[1]", "sql-injection", "manual"], + ["group:xorm", "Session", true, "SumInt", "", "", "Argument[1]", "sql-injection", "manual"], + ["group:xorm", "Session", true, "SumsInt", "", "", "Argument[1]", "sql-injection", "manual"], + ["group:xorm", "Session", true, "Where", "", "", "Argument[0]", "sql-injection", "manual"] + ] + } + ] +} diff --git a/go/ql/lib/ext/xorm.io.xorm.model.yml b/go/ql/lib/ext/xorm.io.xorm.model.yml deleted file mode 100644 index 5cf1ac4f5d73..000000000000 --- a/go/ql/lib/ext/xorm.io.xorm.model.yml +++ /dev/null @@ -1,49 +0,0 @@ -extensions: - - addsTo: - pack: codeql/go-all - extensible: packageGrouping - data: - - ["xorm", "xorm.io/xorm"] - - ["xorm", "github.com/go-xorm/xorm"] - - addsTo: - pack: codeql/go-all - extensible: sinkModel - data: - - ["group:xorm", "Engine", True, "Alias", "", "", "Argument[0]", "sql-injection", "manual"] - - ["group:xorm", "Engine", True, "And", "", "", "Argument[0]", "sql-injection", "manual"] - # Engine.Exec has to be modeled in QL to select only the first syntactic argument - - ["group:xorm", "Engine", True, "GroupBy", "", "", "Argument[0]", "sql-injection", "manual"] - - ["group:xorm", "Engine", True, "Having", "", "", "Argument[0]", "sql-injection", "manual"] - - ["group:xorm", "Engine", True, "In", "", "", "Argument[0]", "sql-injection", "manual"] - - ["group:xorm", "Engine", True, "Join", "", "", "Argument[0..2]", "sql-injection", "manual"] - - ["group:xorm", "Engine", True, "NotIn", "", "", "Argument[0]", "sql-injection", "manual"] - - ["group:xorm", "Engine", True, "Or", "", "", "Argument[0]", "sql-injection", "manual"] - - ["group:xorm", "Engine", True, "OrderBy", "", "", "Argument[0]", "sql-injection", "manual"] - # Engine.Query, Engine.QueryInterface and Engine.QueryString have to be modeled in QL to select only the first syntactic argument - - ["group:xorm", "Engine", True, "Select", "", "", "Argument[0]", "sql-injection", "manual"] - - ["group:xorm", "Engine", True, "SetExpr", "", "", "Argument[0]", "sql-injection", "manual"] - - ["group:xorm", "Engine", True, "SQL", "", "", "Argument[0]", "sql-injection", "manual"] - - ["group:xorm", "Engine", True, "Sum", "", "", "Argument[1]", "sql-injection", "manual"] - - ["group:xorm", "Engine", True, "Sums", "", "", "Argument[1]", "sql-injection", "manual"] - - ["group:xorm", "Engine", True, "SumInt", "", "", "Argument[1]", "sql-injection", "manual"] - - ["group:xorm", "Engine", True, "SumsInt", "", "", "Argument[1]", "sql-injection", "manual"] - - ["group:xorm", "Engine", True, "Where", "", "", "Argument[0]", "sql-injection", "manual"] - - ["group:xorm", "Session", True, "Alias", "", "", "Argument[0]", "sql-injection", "manual"] - - ["group:xorm", "Session", True, "And", "", "", "Argument[0]", "sql-injection", "manual"] - # Session.Exec has to be modeled in QL to select only the first syntactic argument - - ["group:xorm", "Session", True, "GroupBy", "", "", "Argument[0]", "sql-injection", "manual"] - - ["group:xorm", "Session", True, "Having", "", "", "Argument[0]", "sql-injection", "manual"] - - ["group:xorm", "Session", True, "In", "", "", "Argument[0]", "sql-injection", "manual"] - - ["group:xorm", "Session", True, "Join", "", "", "Argument[0..2]", "sql-injection", "manual"] - - ["group:xorm", "Session", True, "NotIn", "", "", "Argument[0]", "sql-injection", "manual"] - - ["group:xorm", "Session", True, "Or", "", "", "Argument[0]", "sql-injection", "manual"] - - ["group:xorm", "Session", True, "OrderBy", "", "", "Argument[0]", "sql-injection", "manual"] - # Session.Query, Session.QueryInterface and Session.QueryString have to be modeled in QL to select only the first syntactic argument - - ["group:xorm", "Session", True, "Select", "", "", "Argument[0]", "sql-injection", "manual"] - - ["group:xorm", "Session", True, "SetExpr", "", "", "Argument[0]", "sql-injection", "manual"] - - ["group:xorm", "Session", True, "SQL", "", "", "Argument[0]", "sql-injection", "manual"] - - ["group:xorm", "Session", True, "Sum", "", "", "Argument[1]", "sql-injection", "manual"] - - ["group:xorm", "Session", True, "Sums", "", "", "Argument[1]", "sql-injection", "manual"] - - ["group:xorm", "Session", True, "SumInt", "", "", "Argument[1]", "sql-injection", "manual"] - - ["group:xorm", "Session", True, "SumsInt", "", "", "Argument[1]", "sql-injection", "manual"] - - ["group:xorm", "Session", True, "Where", "", "", "Argument[0]", "sql-injection", "manual"] diff --git a/go/ql/lib/qlpack.yml b/go/ql/lib/qlpack.yml index 728d6fbe2263..fd382ab863ba 100644 --- a/go/ql/lib/qlpack.yml +++ b/go/ql/lib/qlpack.yml @@ -16,5 +16,6 @@ dependencies: codeql/util: ${workspace} dataExtensions: - ext/*.model.yml + - ext/*.model.json warnOnImplicitThis: true compileForOverlayEval: true diff --git a/go/ql/test/modelconversion/EnumerateModels.expected b/go/ql/test/modelconversion/EnumerateModels.expected new file mode 100644 index 000000000000..c6149ef37db5 --- /dev/null +++ b/go/ql/test/modelconversion/EnumerateModels.expected @@ -0,0 +1,2324 @@ +barrierGuardModels +barrierModels +| group:beego | | true | Htmlquote | | | ReturnValue | html-injection | manual | +| mime/multipart | FileHeader | false | Filename | | | | path-injection | manual | +| mime/multipart | Part | false | FileName | | | ReturnValue | path-injection | manual | +neutralModels +sinkModels +| cloud.google.com/go/bigquery | Client | true | Query | | | Argument[0] | sql-injection | manual | +| database/sql | Conn | true | Exec | | | Argument[0] | sql-injection | manual | +| database/sql | Conn | true | ExecContext | | | Argument[1] | sql-injection | manual | +| database/sql | Conn | true | Prepare | | | Argument[0] | sql-injection | manual | +| database/sql | Conn | true | PrepareContext | | | Argument[1] | sql-injection | manual | +| database/sql | Conn | true | Query | | | Argument[0] | sql-injection | manual | +| database/sql | Conn | true | QueryContext | | | Argument[1] | sql-injection | manual | +| database/sql | Conn | true | QueryRow | | | Argument[0] | sql-injection | manual | +| database/sql | Conn | true | QueryRowContext | | | Argument[1] | sql-injection | manual | +| database/sql | DB | true | Exec | | | Argument[0] | sql-injection | manual | +| database/sql | DB | true | ExecContext | | | Argument[1] | sql-injection | manual | +| database/sql | DB | true | Prepare | | | Argument[0] | sql-injection | manual | +| database/sql | DB | true | PrepareContext | | | Argument[1] | sql-injection | manual | +| database/sql | DB | true | Query | | | Argument[0] | sql-injection | manual | +| database/sql | DB | true | QueryContext | | | Argument[1] | sql-injection | manual | +| database/sql | DB | true | QueryRow | | | Argument[0] | sql-injection | manual | +| database/sql | DB | true | QueryRowContext | | | Argument[1] | sql-injection | manual | +| database/sql | Tx | true | Exec | | | Argument[0] | sql-injection | manual | +| database/sql | Tx | true | ExecContext | | | Argument[1] | sql-injection | manual | +| database/sql | Tx | true | Prepare | | | Argument[0] | sql-injection | manual | +| database/sql | Tx | true | PrepareContext | | | Argument[1] | sql-injection | manual | +| database/sql | Tx | true | Query | | | Argument[0] | sql-injection | manual | +| database/sql | Tx | true | QueryContext | | | Argument[1] | sql-injection | manual | +| database/sql | Tx | true | QueryRow | | | Argument[0] | sql-injection | manual | +| database/sql | Tx | true | QueryRowContext | | | Argument[1] | sql-injection | manual | +| database/sql/driver | Conn | true | Prepare | | | Argument[0] | sql-injection | manual | +| database/sql/driver | ConnPrepareContext | true | PrepareContext | | | Argument[1] | sql-injection | manual | +| database/sql/driver | Execer | true | Exec | | | Argument[0] | sql-injection | manual | +| database/sql/driver | ExecerContext | true | ExecContext | | | Argument[1] | sql-injection | manual | +| database/sql/driver | Queryer | true | Query | | | Argument[0] | sql-injection | manual | +| database/sql/driver | QueryerContext | true | QueryContext | | | Argument[1] | sql-injection | manual | +| fmt | | false | Print | | | Argument[0] | log-injection | manual | +| fmt | | false | Printf | | | Argument[0..1] | log-injection | manual | +| fmt | | false | Println | | | Argument[0] | log-injection | manual | +| github.com/ChrisTrenkamp/goxpath | | false | MustParse | | | Argument[0] | xpath-injection | manual | +| github.com/ChrisTrenkamp/goxpath | | false | Parse | | | Argument[0] | xpath-injection | manual | +| github.com/ChrisTrenkamp/goxpath | | false | ParseExec | | | Argument[0] | xpath-injection | manual | +| github.com/antchfx/htmlquery | | false | Find | | | Argument[1] | xpath-injection | manual | +| github.com/antchfx/htmlquery | | false | FindOne | | | Argument[1] | xpath-injection | manual | +| github.com/antchfx/htmlquery | | false | Query | | | Argument[1] | xpath-injection | manual | +| github.com/antchfx/htmlquery | | false | QueryAll | | | Argument[1] | xpath-injection | manual | +| github.com/antchfx/jsonquery | | false | Find | | | Argument[1] | xpath-injection | manual | +| github.com/antchfx/jsonquery | | false | FindOne | | | Argument[1] | xpath-injection | manual | +| github.com/antchfx/jsonquery | | false | Query | | | Argument[1] | xpath-injection | manual | +| github.com/antchfx/jsonquery | | false | QueryAll | | | Argument[1] | xpath-injection | manual | +| github.com/antchfx/xmlquery | | false | Find | | | Argument[1] | xpath-injection | manual | +| github.com/antchfx/xmlquery | | false | FindEach | | | Argument[1] | xpath-injection | manual | +| github.com/antchfx/xmlquery | | false | FindEachWithBreak | | | Argument[1] | xpath-injection | manual | +| github.com/antchfx/xmlquery | | false | FindOne | | | Argument[1] | xpath-injection | manual | +| github.com/antchfx/xmlquery | | false | Query | | | Argument[1] | xpath-injection | manual | +| github.com/antchfx/xmlquery | | false | QueryAll | | | Argument[1] | xpath-injection | manual | +| github.com/antchfx/xmlquery | Node | true | SelectElement | | | Argument[0] | xpath-injection | manual | +| github.com/antchfx/xmlquery | Node | true | SelectElements | | | Argument[0] | xpath-injection | manual | +| github.com/antchfx/xpath | | false | Compile | | | Argument[0] | xpath-injection | manual | +| github.com/antchfx/xpath | | false | CompileWithNS | | | Argument[0] | xpath-injection | manual | +| github.com/antchfx/xpath | | false | MustCompile | | | Argument[0] | xpath-injection | manual | +| github.com/antchfx/xpath | | false | Select | | | Argument[1] | xpath-injection | manual | +| github.com/appleboy/gin-jwt | GinJWTMiddleware | true | Key | | | | credentials-key | manual | +| github.com/codeskyblue/go-sh | | false | Command | | | Argument[0] | command-injection | manual | +| github.com/codeskyblue/go-sh | Session | true | Call | | | Argument[0] | command-injection | manual | +| github.com/codeskyblue/go-sh | Session | true | Command | | | Argument[0] | command-injection | manual | +| github.com/codeskyblue/go-sh | Session | true | Exec | | | Argument[0] | command-injection | manual | +| github.com/cristalhq/jwt | | false | NewSignerHS | | | Argument[1] | credentials-key | manual | +| github.com/davecgh/go-spew/spew | | false | Dump | | | Argument[0] | log-injection | manual | +| github.com/davecgh/go-spew/spew | | false | Errorf | | | Argument[0..1] | log-injection | manual | +| github.com/davecgh/go-spew/spew | | false | Fdump | | | Argument[1] | log-injection | manual | +| github.com/davecgh/go-spew/spew | | false | Fprint | | | Argument[1] | log-injection | manual | +| github.com/davecgh/go-spew/spew | | false | Fprintf | | | Argument[1..2] | log-injection | manual | +| github.com/davecgh/go-spew/spew | | false | Fprintln | | | Argument[1] | log-injection | manual | +| github.com/davecgh/go-spew/spew | | false | Print | | | Argument[0] | log-injection | manual | +| github.com/davecgh/go-spew/spew | | false | Printf | | | Argument[0..1] | log-injection | manual | +| github.com/davecgh/go-spew/spew | | false | Println | | | Argument[0] | log-injection | manual | +| github.com/dgrijalva/jwt-go | Parser | true | ParseUnverified | | | Argument[0] | jwt | manual | +| github.com/dgrijalva/jwt-go | SigningMethod | true | Sign | | | Argument[1] | credentials-key | manual | +| github.com/dgrijalva/jwt-go | Token | true | SignedString | | | Argument[0] | credentials-key | manual | +| github.com/elazarl/goproxy | ProxyCtx | true | Logf | | | Argument[0..1] | log-injection | manual | +| github.com/elazarl/goproxy | ProxyCtx | true | Warnf | | | Argument[0..1] | log-injection | manual | +| github.com/form3tech-oss/jwt-go | SigningMethod | true | Sign | | | Argument[1] | credentials-key | manual | +| github.com/form3tech-oss/jwt-go | Token | true | SignedString | | | Argument[0] | credentials-key | manual | +| github.com/gin-gonic/gin | Context | true | File | | | Argument[0] | path-injection | manual | +| github.com/gin-gonic/gin | Context | true | FileAttachment | | | Argument[0] | path-injection | manual | +| github.com/gin-gonic/gin | Context | true | SaveUploadedFile | | | Argument[1] | path-injection | manual | +| github.com/go-chi/jwtauth | | false | New | | | Argument[1] | credentials-key | manual | +| github.com/go-kit/kit/auth/jwt | | false | NewSigner | | | Argument[1] | credentials-key | manual | +| github.com/gofiber/fiber | Ctx | true | Download | | | Argument[0] | path-injection | manual | +| github.com/gofiber/fiber | Ctx | true | Redirect | | | Argument[0] | url-redirection[receiver] | manual | +| github.com/gofiber/fiber | Ctx | true | SaveFile | | | Argument[1] | path-injection | manual | +| github.com/gofiber/fiber | Ctx | true | SaveFileToStorage | | | Argument[1] | path-injection | manual | +| github.com/gofiber/fiber | Ctx | true | SendFile | | | Argument[0] | path-injection | manual | +| github.com/gogf/gf-jwt | GfJWTMiddleware | true | Key | | | | credentials-key | manual | +| github.com/gogf/gf/database/gdb | Core | true | DoCommit | | | Argument[2] | sql-injection | manual | +| github.com/gogf/gf/database/gdb | Core | true | DoExec | | | Argument[2] | sql-injection | manual | +| github.com/gogf/gf/database/gdb | Core | true | DoGetAll | | | Argument[2] | sql-injection | manual | +| github.com/gogf/gf/database/gdb | Core | true | DoPrepare | | | Argument[2] | sql-injection | manual | +| github.com/gogf/gf/database/gdb | Core | true | DoQuery | | | Argument[2] | sql-injection | manual | +| github.com/gogf/gf/database/gdb | Core | true | Exec | | | Argument[0] | sql-injection | manual | +| github.com/gogf/gf/database/gdb | Core | true | GetAll | | | Argument[0] | sql-injection | manual | +| github.com/gogf/gf/database/gdb | Core | true | GetArray | | | Argument[0] | sql-injection | manual | +| github.com/gogf/gf/database/gdb | Core | true | GetCount | | | Argument[0] | sql-injection | manual | +| github.com/gogf/gf/database/gdb | Core | true | GetOne | | | Argument[0] | sql-injection | manual | +| github.com/gogf/gf/database/gdb | Core | true | GetScan | | | Argument[1] | sql-injection | manual | +| github.com/gogf/gf/database/gdb | Core | true | GetStruct | | | Argument[1] | sql-injection | manual | +| github.com/gogf/gf/database/gdb | Core | true | GetStructs | | | Argument[1] | sql-injection | manual | +| github.com/gogf/gf/database/gdb | Core | true | GetValue | | | Argument[0] | sql-injection | manual | +| github.com/gogf/gf/database/gdb | Core | true | Prepare | | | Argument[0] | sql-injection | manual | +| github.com/gogf/gf/database/gdb | Core | true | Query | | | Argument[0] | sql-injection | manual | +| github.com/gogf/gf/database/gdb | Core | true | Raw | | | Argument[0] | sql-injection | manual | +| github.com/gogf/gf/database/gdb | DB | true | DoCommit | | | Argument[2] | sql-injection | manual | +| github.com/gogf/gf/database/gdb | DB | true | DoExec | | | Argument[2] | sql-injection | manual | +| github.com/gogf/gf/database/gdb | DB | true | DoGetAll | | | Argument[2] | sql-injection | manual | +| github.com/gogf/gf/database/gdb | DB | true | DoPrepare | | | Argument[2] | sql-injection | manual | +| github.com/gogf/gf/database/gdb | DB | true | DoQuery | | | Argument[2] | sql-injection | manual | +| github.com/gogf/gf/database/gdb | DB | true | Exec | | | Argument[0] | sql-injection | manual | +| github.com/gogf/gf/database/gdb | DB | true | GetAll | | | Argument[0] | sql-injection | manual | +| github.com/gogf/gf/database/gdb | DB | true | GetArray | | | Argument[0] | sql-injection | manual | +| github.com/gogf/gf/database/gdb | DB | true | GetCount | | | Argument[0] | sql-injection | manual | +| github.com/gogf/gf/database/gdb | DB | true | GetOne | | | Argument[0] | sql-injection | manual | +| github.com/gogf/gf/database/gdb | DB | true | GetScan | | | Argument[1] | sql-injection | manual | +| github.com/gogf/gf/database/gdb | DB | true | GetStruct | | | Argument[1] | sql-injection | manual | +| github.com/gogf/gf/database/gdb | DB | true | GetStructs | | | Argument[1] | sql-injection | manual | +| github.com/gogf/gf/database/gdb | DB | true | GetValue | | | Argument[0] | sql-injection | manual | +| github.com/gogf/gf/database/gdb | DB | true | Prepare | | | Argument[0] | sql-injection | manual | +| github.com/gogf/gf/database/gdb | DB | true | Query | | | Argument[0] | sql-injection | manual | +| github.com/gogf/gf/database/gdb | DB | true | Raw | | | Argument[0] | sql-injection | manual | +| github.com/gogf/gf/database/gdb | Tx | true | DoCommit | | | Argument[2] | sql-injection | manual | +| github.com/gogf/gf/database/gdb | Tx | true | DoExec | | | Argument[2] | sql-injection | manual | +| github.com/gogf/gf/database/gdb | Tx | true | DoGetAll | | | Argument[2] | sql-injection | manual | +| github.com/gogf/gf/database/gdb | Tx | true | DoPrepare | | | Argument[2] | sql-injection | manual | +| github.com/gogf/gf/database/gdb | Tx | true | DoQuery | | | Argument[2] | sql-injection | manual | +| github.com/gogf/gf/database/gdb | Tx | true | Exec | | | Argument[0] | sql-injection | manual | +| github.com/gogf/gf/database/gdb | Tx | true | GetAll | | | Argument[0] | sql-injection | manual | +| github.com/gogf/gf/database/gdb | Tx | true | GetArray | | | Argument[0] | sql-injection | manual | +| github.com/gogf/gf/database/gdb | Tx | true | GetCount | | | Argument[0] | sql-injection | manual | +| github.com/gogf/gf/database/gdb | Tx | true | GetOne | | | Argument[0] | sql-injection | manual | +| github.com/gogf/gf/database/gdb | Tx | true | GetScan | | | Argument[1] | sql-injection | manual | +| github.com/gogf/gf/database/gdb | Tx | true | GetStruct | | | Argument[1] | sql-injection | manual | +| github.com/gogf/gf/database/gdb | Tx | true | GetStructs | | | Argument[1] | sql-injection | manual | +| github.com/gogf/gf/database/gdb | Tx | true | GetValue | | | Argument[0] | sql-injection | manual | +| github.com/gogf/gf/database/gdb | Tx | true | Prepare | | | Argument[0] | sql-injection | manual | +| github.com/gogf/gf/database/gdb | Tx | true | Query | | | Argument[0] | sql-injection | manual | +| github.com/gogf/gf/database/gdb | Tx | true | Raw | | | Argument[0] | sql-injection | manual | +| github.com/golang-jwt/jwt | Parser | true | ParseUnverified | | | Argument[0] | jwt | manual | +| github.com/golang-jwt/jwt | SigningMethod | true | Sign | | | Argument[1] | credentials-key | manual | +| github.com/golang-jwt/jwt | Token | true | SignedString | | | Argument[0] | credentials-key | manual | +| github.com/jmoiron/sqlx | DB | true | Get | | | Argument[1] | sql-injection | manual | +| github.com/jmoiron/sqlx | DB | true | MustExec | | | Argument[0] | sql-injection | manual | +| github.com/jmoiron/sqlx | DB | true | NamedExec | | | Argument[0] | sql-injection | manual | +| github.com/jmoiron/sqlx | DB | true | NamedQuery | | | Argument[0] | sql-injection | manual | +| github.com/jmoiron/sqlx | DB | true | Queryx | | | Argument[0] | sql-injection | manual | +| github.com/jmoiron/sqlx | DB | true | Select | | | Argument[1] | sql-injection | manual | +| github.com/jmoiron/sqlx | Tx | true | Get | | | Argument[1] | sql-injection | manual | +| github.com/jmoiron/sqlx | Tx | true | MustExec | | | Argument[0] | sql-injection | manual | +| github.com/jmoiron/sqlx | Tx | true | NamedExec | | | Argument[0] | sql-injection | manual | +| github.com/jmoiron/sqlx | Tx | true | NamedQuery | | | Argument[0] | sql-injection | manual | +| github.com/jmoiron/sqlx | Tx | true | Queryx | | | Argument[0] | sql-injection | manual | +| github.com/jmoiron/sqlx | Tx | true | Select | | | Argument[1] | sql-injection | manual | +| github.com/kataras/iris/middleware/jwt | | false | NewSigner | | | Argument[1] | credentials-key | manual | +| github.com/kataras/iris/middleware/jwt | Signer | true | Key | | | | credentials-key | manual | +| github.com/kataras/jwt | | false | Sign | | | Argument[1] | credentials-key | manual | +| github.com/kataras/jwt | | false | SignEncrypted | | | Argument[1] | credentials-key | manual | +| github.com/kataras/jwt | | false | SignEncryptedWithHeader | | | Argument[1] | credentials-key | manual | +| github.com/kataras/jwt | | false | SignWithHeader | | | Argument[1] | credentials-key | manual | +| github.com/kataras/jwt | Keys | true | Register | | | Argument[3] | credentials-key | manual | +| github.com/labstack/echo | Context | true | Attachment | | | Argument[0] | path-injection | manual | +| github.com/labstack/echo | Context | true | File | | | Argument[0] | path-injection | manual | +| github.com/labstack/echo | Context | true | Redirect | | | Argument[1] | url-redirection | manual | +| github.com/lestrrat-go/jwx | | false | New | | | Argument[0] | credentials-key | manual | +| github.com/lestrrat-go/jwx/jwk | | false | New | | | Argument[0] | credentials-key | manual | +| github.com/lestrrat-go/libxml2/parser | Parser | true | Parse | | | Argument[0] | xpath-injection | manual | +| github.com/lestrrat-go/libxml2/parser | Parser | true | ParseReader | | | Argument[0] | xpath-injection | manual | +| github.com/lestrrat-go/libxml2/parser | Parser | true | ParseString | | | Argument[0] | xpath-injection | manual | +| github.com/lestrrat/go-jwx/jwk | | false | New | | | Argument[0] | credentials-key | manual | +| github.com/ory/fosite/token/jwt | SigningMethod | true | Sign | | | Argument[1] | credentials-key | manual | +| github.com/ory/fosite/token/jwt | Token | true | SignedString | | | Argument[0] | credentials-key | manual | +| github.com/santhosh-tekuri/xpathparser | | false | MustParse | | | Argument[0] | xpath-injection | manual | +| github.com/santhosh-tekuri/xpathparser | | false | Parse | | | Argument[0] | xpath-injection | manual | +| github.com/spf13/afero | HttpFs | true | Create | | | Argument[0] | path-injection | manual | +| github.com/spf13/afero | HttpFs | true | Open | | | Argument[0] | path-injection | manual | +| github.com/spf13/afero | HttpFs | true | OpenFile | | | Argument[0] | path-injection | manual | +| github.com/spf13/afero | HttpFs | true | Remove | | | Argument[0] | path-injection | manual | +| github.com/spf13/afero | HttpFs | true | RemoveAll | | | Argument[0] | path-injection | manual | +| github.com/spf13/afero | MemMapFs | true | Create | | | Argument[0] | path-injection | manual | +| github.com/spf13/afero | MemMapFs | true | Mkdir | | | Argument[0] | path-injection | manual | +| github.com/spf13/afero | MemMapFs | true | MkdirAll | | | Argument[0] | path-injection | manual | +| github.com/spf13/afero | MemMapFs | true | Open | | | Argument[0] | path-injection | manual | +| github.com/spf13/afero | MemMapFs | true | OpenFile | | | Argument[0] | path-injection | manual | +| github.com/spf13/afero | MemMapFs | true | Remove | | | Argument[0] | path-injection | manual | +| github.com/spf13/afero | MemMapFs | true | RemoveAll | | | Argument[0] | path-injection | manual | +| github.com/spf13/afero | OsFs | true | Create | | | Argument[0] | path-injection | manual | +| github.com/spf13/afero | OsFs | true | Mkdir | | | Argument[0] | path-injection | manual | +| github.com/spf13/afero | OsFs | true | MkdirAll | | | Argument[0] | path-injection | manual | +| github.com/spf13/afero | OsFs | true | Open | | | Argument[0] | path-injection | manual | +| github.com/spf13/afero | OsFs | true | OpenFile | | | Argument[0] | path-injection | manual | +| github.com/spf13/afero | OsFs | true | ReadlinkIfPossible | | | Argument[0] | path-injection | manual | +| github.com/spf13/afero | OsFs | true | Remove | | | Argument[0] | path-injection | manual | +| github.com/spf13/afero | OsFs | true | RemoveAll | | | Argument[0] | path-injection | manual | +| github.com/spf13/afero | ReadOnlyFs | true | Create | | | Argument[0] | path-injection | manual | +| github.com/spf13/afero | ReadOnlyFs | true | Mkdir | | | Argument[0] | path-injection | manual | +| github.com/spf13/afero | ReadOnlyFs | true | MkdirAll | | | Argument[0] | path-injection | manual | +| github.com/spf13/afero | ReadOnlyFs | true | Open | | | Argument[0] | path-injection | manual | +| github.com/spf13/afero | ReadOnlyFs | true | OpenFile | | | Argument[0] | path-injection | manual | +| github.com/spf13/afero | ReadOnlyFs | true | ReadDir | | | Argument[0] | path-injection | manual | +| github.com/spf13/afero | ReadOnlyFs | true | ReadlinkIfPossible | | | Argument[0] | path-injection | manual | +| github.com/spf13/afero | RegexpFs | true | Create | | | Argument[0] | path-injection | manual | +| github.com/spf13/afero | RegexpFs | true | Mkdir | | | Argument[0] | path-injection | manual | +| github.com/spf13/afero | RegexpFs | true | MkdirAll | | | Argument[0] | path-injection | manual | +| github.com/spf13/afero | RegexpFs | true | Open | | | Argument[0] | path-injection | manual | +| github.com/spf13/afero | RegexpFs | true | OpenFile | | | Argument[0] | path-injection | manual | +| github.com/spf13/afero | RegexpFs | true | Remove | | | Argument[0] | path-injection | manual | +| github.com/spf13/afero | RegexpFs | true | RemoveAll | | | Argument[0] | path-injection | manual | +| github.com/uptrace/bun | | false | NewRawQuery | | | Argument[1] | sql-injection | manual | +| github.com/uptrace/bun | AddColumnQuery | true | ColumnExpr | | | Argument[0] | sql-injection | manual | +| github.com/uptrace/bun | AddColumnQuery | true | ModelTableExpr | | | Argument[0] | sql-injection | manual | +| github.com/uptrace/bun | AddColumnQuery | true | TableExpr | | | Argument[0] | sql-injection | manual | +| github.com/uptrace/bun | Conn | true | Exec | | | Argument[0] | sql-injection | manual | +| github.com/uptrace/bun | Conn | true | ExecContext | | | Argument[1] | sql-injection | manual | +| github.com/uptrace/bun | Conn | true | NewRaw | | | Argument[0] | sql-injection | manual | +| github.com/uptrace/bun | Conn | true | Prepare | | | Argument[0] | sql-injection | manual | +| github.com/uptrace/bun | Conn | true | PrepareContext | | | Argument[1] | sql-injection | manual | +| github.com/uptrace/bun | Conn | true | Query | | | Argument[0] | sql-injection | manual | +| github.com/uptrace/bun | Conn | true | QueryContext | | | Argument[1] | sql-injection | manual | +| github.com/uptrace/bun | Conn | true | QueryRow | | | Argument[0] | sql-injection | manual | +| github.com/uptrace/bun | Conn | true | QueryRowContext | | | Argument[1] | sql-injection | manual | +| github.com/uptrace/bun | Conn | true | Raw | | | Argument[0] | sql-injection | manual | +| github.com/uptrace/bun | CreateIndexQuery | true | ColumnExpr | | | Argument[0] | sql-injection | manual | +| github.com/uptrace/bun | CreateIndexQuery | true | ModelTableExpr | | | Argument[0] | sql-injection | manual | +| github.com/uptrace/bun | CreateIndexQuery | true | TableExpr | | | Argument[0] | sql-injection | manual | +| github.com/uptrace/bun | CreateIndexQuery | true | Where | | | Argument[0] | sql-injection | manual | +| github.com/uptrace/bun | CreateIndexQuery | true | WhereOr | | | Argument[0] | sql-injection | manual | +| github.com/uptrace/bun | CreateTableQuery | true | ColumnExpr | | | Argument[0] | sql-injection | manual | +| github.com/uptrace/bun | CreateTableQuery | true | ModelTableExpr | | | Argument[0] | sql-injection | manual | +| github.com/uptrace/bun | CreateTableQuery | true | TableExpr | | | Argument[0] | sql-injection | manual | +| github.com/uptrace/bun | DB | true | Exec | | | Argument[0] | sql-injection | manual | +| github.com/uptrace/bun | DB | true | ExecContext | | | Argument[1] | sql-injection | manual | +| github.com/uptrace/bun | DB | true | NewRaw | | | Argument[0] | sql-injection | manual | +| github.com/uptrace/bun | DB | true | Prepare | | | Argument[0] | sql-injection | manual | +| github.com/uptrace/bun | DB | true | PrepareContext | | | Argument[1] | sql-injection | manual | +| github.com/uptrace/bun | DB | true | Query | | | Argument[0] | sql-injection | manual | +| github.com/uptrace/bun | DB | true | QueryContext | | | Argument[1] | sql-injection | manual | +| github.com/uptrace/bun | DB | true | QueryRow | | | Argument[0] | sql-injection | manual | +| github.com/uptrace/bun | DB | true | QueryRowContext | | | Argument[1] | sql-injection | manual | +| github.com/uptrace/bun | DB | true | Raw | | | Argument[0] | sql-injection | manual | +| github.com/uptrace/bun | DeleteQuery | true | TableExpr | | | Argument[0] | sql-injection | manual | +| github.com/uptrace/bun | DeleteQuery | true | Where | | | Argument[0] | sql-injection | manual | +| github.com/uptrace/bun | DeleteQuery | true | WhereOr | | | Argument[0] | sql-injection | manual | +| github.com/uptrace/bun | DropColumnQuery | true | ColumnExpr | | | Argument[0] | sql-injection | manual | +| github.com/uptrace/bun | DropColumnQuery | true | ModelTableExpr | | | Argument[0] | sql-injection | manual | +| github.com/uptrace/bun | DropColumnQuery | true | TableExpr | | | Argument[0] | sql-injection | manual | +| github.com/uptrace/bun | DropTableQuery | true | ModelTableExpr | | | Argument[0] | sql-injection | manual | +| github.com/uptrace/bun | DropTableQuery | true | TableExpr | | | Argument[0] | sql-injection | manual | +| github.com/uptrace/bun | InsertQuery | true | ColumnExpr | | | Argument[0] | sql-injection | manual | +| github.com/uptrace/bun | InsertQuery | true | ModelTableExpr | | | Argument[0] | sql-injection | manual | +| github.com/uptrace/bun | InsertQuery | true | TableExpr | | | Argument[0] | sql-injection | manual | +| github.com/uptrace/bun | InsertQuery | true | Where | | | Argument[0] | sql-injection | manual | +| github.com/uptrace/bun | InsertQuery | true | WhereOr | | | Argument[0] | sql-injection | manual | +| github.com/uptrace/bun | MergeQuery | true | ModelTableExpr | | | Argument[0] | sql-injection | manual | +| github.com/uptrace/bun | MergeQuery | true | TableExpr | | | Argument[0] | sql-injection | manual | +| github.com/uptrace/bun | RawQuery | true | NewRaw | | | Argument[0] | sql-injection | manual | +| github.com/uptrace/bun | SelectQuery | true | ColumnExpr | | | Argument[0] | sql-injection | manual | +| github.com/uptrace/bun | SelectQuery | true | DistinctOn | | | Argument[0] | sql-injection | manual | +| github.com/uptrace/bun | SelectQuery | true | For | | | Argument[0] | sql-injection | manual | +| github.com/uptrace/bun | SelectQuery | true | GroupExpr | | | Argument[0] | sql-injection | manual | +| github.com/uptrace/bun | SelectQuery | true | Having | | | Argument[0] | sql-injection | manual | +| github.com/uptrace/bun | SelectQuery | true | ModelTableExpr | | | Argument[0] | sql-injection | manual | +| github.com/uptrace/bun | SelectQuery | true | OrderExpr | | | Argument[0] | sql-injection | manual | +| github.com/uptrace/bun | SelectQuery | true | TableExpr | | | Argument[0] | sql-injection | manual | +| github.com/uptrace/bun | SelectQuery | true | Where | | | Argument[0] | sql-injection | manual | +| github.com/uptrace/bun | SelectQuery | true | WhereOr | | | Argument[0] | sql-injection | manual | +| github.com/uptrace/bun | TruncateTableQuery | true | TableExpr | | | Argument[0] | sql-injection | manual | +| github.com/uptrace/bun | UpdateQuery | true | ModelTableExpr | | | Argument[0] | sql-injection | manual | +| github.com/uptrace/bun | UpdateQuery | true | TableExpr | | | Argument[0] | sql-injection | manual | +| github.com/uptrace/bun | UpdateQuery | true | Where | | | Argument[0] | sql-injection | manual | +| github.com/uptrace/bun | UpdateQuery | true | WhereOr | | | Argument[0] | sql-injection | manual | +| github.com/valyala/fasthttp | | false | Dial | | | Argument[0] | request-forgery[TCP Addr + Port] | manual | +| github.com/valyala/fasthttp | | false | DialDualStack | | | Argument[0] | request-forgery[TCP Addr + Port] | manual | +| github.com/valyala/fasthttp | | false | DialDualStackTimeout | | | Argument[0] | request-forgery[TCP Addr + Port] | manual | +| github.com/valyala/fasthttp | | false | DialTimeout | | | Argument[0] | request-forgery[TCP Addr + Port] | manual | +| github.com/valyala/fasthttp | | false | Get | | | Argument[1] | request-forgery | manual | +| github.com/valyala/fasthttp | | false | GetDeadline | | | Argument[1] | request-forgery | manual | +| github.com/valyala/fasthttp | | false | GetTimeout | | | Argument[1] | request-forgery | manual | +| github.com/valyala/fasthttp | | false | Post | | | Argument[1] | request-forgery | manual | +| github.com/valyala/fasthttp | | false | SaveMultipartFile | | | Argument[1] | path-injection | manual | +| github.com/valyala/fasthttp | | false | ServeFile | | | Argument[1] | path-injection | manual | +| github.com/valyala/fasthttp | | false | ServeFileBytes | | | Argument[1] | path-injection | manual | +| github.com/valyala/fasthttp | | false | ServeFileBytesUncompressed | | | Argument[1] | path-injection | manual | +| github.com/valyala/fasthttp | | false | ServeFileUncompressed | | | Argument[1] | path-injection | manual | +| github.com/valyala/fasthttp | Client | true | Get | | | Argument[1] | request-forgery | manual | +| github.com/valyala/fasthttp | Client | true | GetDeadline | | | Argument[1] | request-forgery | manual | +| github.com/valyala/fasthttp | Client | true | GetTimeout | | | Argument[1] | request-forgery | manual | +| github.com/valyala/fasthttp | Client | true | Post | | | Argument[1] | request-forgery | manual | +| github.com/valyala/fasthttp | HostClient | true | Get | | | Argument[1] | request-forgery | manual | +| github.com/valyala/fasthttp | HostClient | true | GetDeadline | | | Argument[1] | request-forgery | manual | +| github.com/valyala/fasthttp | HostClient | true | GetTimeout | | | Argument[1] | request-forgery | manual | +| github.com/valyala/fasthttp | HostClient | true | Post | | | Argument[1] | request-forgery | manual | +| github.com/valyala/fasthttp | Request | true | SetHost | | | Argument[0] | request-forgery | manual | +| github.com/valyala/fasthttp | Request | true | SetHostBytes | | | Argument[0] | request-forgery | manual | +| github.com/valyala/fasthttp | Request | true | SetRequestURI | | | Argument[0] | request-forgery | manual | +| github.com/valyala/fasthttp | Request | true | SetRequestURIBytes | | | Argument[0] | request-forgery | manual | +| github.com/valyala/fasthttp | Request | true | SetURI | | | Argument[0] | request-forgery | manual | +| github.com/valyala/fasthttp | RequestCtx | true | Redirect | | | Argument[0] | url-redirection | manual | +| github.com/valyala/fasthttp | RequestCtx | true | RedirectBytes | | | Argument[0] | url-redirection | manual | +| github.com/valyala/fasthttp | RequestCtx | true | SendFile | | | Argument[0] | path-injection | manual | +| github.com/valyala/fasthttp | RequestCtx | true | SendFileBytes | | | Argument[0] | path-injection | manual | +| github.com/valyala/fasthttp | Response | true | SendFile | | | Argument[0] | path-injection | manual | +| github.com/valyala/fasthttp | TCPDialer | true | Dial | | | Argument[0] | request-forgery[TCP Addr + Port] | manual | +| github.com/valyala/fasthttp | TCPDialer | true | DialDualStack | | | Argument[0] | request-forgery[TCP Addr + Port] | manual | +| github.com/valyala/fasthttp | TCPDialer | true | DialDualStackTimeout | | | Argument[0] | request-forgery[TCP Addr + Port] | manual | +| github.com/valyala/fasthttp | TCPDialer | true | DialTimeout | | | Argument[0] | request-forgery[TCP Addr + Port] | manual | +| go.mongodb.org/mongo-driver/mongo | Collection | true | Aggregate | | | Argument[1] | nosql-injection | manual | +| go.mongodb.org/mongo-driver/mongo | Collection | true | CountDocuments | | | Argument[1] | nosql-injection | manual | +| go.mongodb.org/mongo-driver/mongo | Collection | true | DeleteMany | | | Argument[1] | nosql-injection | manual | +| go.mongodb.org/mongo-driver/mongo | Collection | true | DeleteOne | | | Argument[1] | nosql-injection | manual | +| go.mongodb.org/mongo-driver/mongo | Collection | true | Distinct | | | Argument[2] | nosql-injection | manual | +| go.mongodb.org/mongo-driver/mongo | Collection | true | Find | | | Argument[1] | nosql-injection | manual | +| go.mongodb.org/mongo-driver/mongo | Collection | true | FindOne | | | Argument[1] | nosql-injection | manual | +| go.mongodb.org/mongo-driver/mongo | Collection | true | FindOneAndDelete | | | Argument[1] | nosql-injection | manual | +| go.mongodb.org/mongo-driver/mongo | Collection | true | FindOneAndReplace | | | Argument[1] | nosql-injection | manual | +| go.mongodb.org/mongo-driver/mongo | Collection | true | FindOneAndUpdate | | | Argument[1] | nosql-injection | manual | +| go.mongodb.org/mongo-driver/mongo | Collection | true | ReplaceOne | | | Argument[1] | nosql-injection | manual | +| go.mongodb.org/mongo-driver/mongo | Collection | true | UpdateMany | | | Argument[1] | nosql-injection | manual | +| go.mongodb.org/mongo-driver/mongo | Collection | true | UpdateOne | | | Argument[1] | nosql-injection | manual | +| go.mongodb.org/mongo-driver/mongo | Collection | true | Watch | | | Argument[1] | nosql-injection | manual | +| go.uber.org/zap | Logger | true | DPanic | | | Argument[0..1] | log-injection | manual | +| go.uber.org/zap | Logger | true | Debug | | | Argument[0..1] | log-injection | manual | +| go.uber.org/zap | Logger | true | Error | | | Argument[0..1] | log-injection | manual | +| go.uber.org/zap | Logger | true | Fatal | | | Argument[0..1] | log-injection | manual | +| go.uber.org/zap | Logger | true | Info | | | Argument[0..1] | log-injection | manual | +| go.uber.org/zap | Logger | true | Named | | | Argument[0] | log-injection | manual | +| go.uber.org/zap | Logger | true | Panic | | | Argument[0..1] | log-injection | manual | +| go.uber.org/zap | Logger | true | Warn | | | Argument[0..1] | log-injection | manual | +| go.uber.org/zap | Logger | true | With | | | Argument[0] | log-injection | manual | +| go.uber.org/zap | Logger | true | WithOptions | | | Argument[0] | log-injection | manual | +| go.uber.org/zap | SugaredLogger | true | DPanic | | | Argument[0] | log-injection | manual | +| go.uber.org/zap | SugaredLogger | true | DPanicf | | | Argument[0..1] | log-injection | manual | +| go.uber.org/zap | SugaredLogger | true | DPanicw | | | Argument[0..1] | log-injection | manual | +| go.uber.org/zap | SugaredLogger | true | Debug | | | Argument[0] | log-injection | manual | +| go.uber.org/zap | SugaredLogger | true | Debugf | | | Argument[0..1] | log-injection | manual | +| go.uber.org/zap | SugaredLogger | true | Debugw | | | Argument[0..1] | log-injection | manual | +| go.uber.org/zap | SugaredLogger | true | Error | | | Argument[0] | log-injection | manual | +| go.uber.org/zap | SugaredLogger | true | Errorf | | | Argument[0..1] | log-injection | manual | +| go.uber.org/zap | SugaredLogger | true | Errorw | | | Argument[0..1] | log-injection | manual | +| go.uber.org/zap | SugaredLogger | true | Fatal | | | Argument[0] | log-injection | manual | +| go.uber.org/zap | SugaredLogger | true | Fatalf | | | Argument[0..1] | log-injection | manual | +| go.uber.org/zap | SugaredLogger | true | Fatalw | | | Argument[0..1] | log-injection | manual | +| go.uber.org/zap | SugaredLogger | true | Info | | | Argument[0] | log-injection | manual | +| go.uber.org/zap | SugaredLogger | true | Infof | | | Argument[0..1] | log-injection | manual | +| go.uber.org/zap | SugaredLogger | true | Infow | | | Argument[0..1] | log-injection | manual | +| go.uber.org/zap | SugaredLogger | true | Named | | | Argument[0] | log-injection | manual | +| go.uber.org/zap | SugaredLogger | true | Panic | | | Argument[0] | log-injection | manual | +| go.uber.org/zap | SugaredLogger | true | Panicf | | | Argument[0..1] | log-injection | manual | +| go.uber.org/zap | SugaredLogger | true | Panicw | | | Argument[0..1] | log-injection | manual | +| go.uber.org/zap | SugaredLogger | true | Warn | | | Argument[0] | log-injection | manual | +| go.uber.org/zap | SugaredLogger | true | Warnf | | | Argument[0..1] | log-injection | manual | +| go.uber.org/zap | SugaredLogger | true | Warnw | | | Argument[0..1] | log-injection | manual | +| go.uber.org/zap | SugaredLogger | true | With | | | Argument[0] | log-injection | manual | +| golang.org/x/crypto/ssh | Session | true | CombinedOutput | | | Argument[0] | command-injection | manual | +| golang.org/x/crypto/ssh | Session | true | Output | | | Argument[0] | command-injection | manual | +| golang.org/x/crypto/ssh | Session | true | Run | | | Argument[0] | command-injection | manual | +| golang.org/x/crypto/ssh | Session | true | Start | | | Argument[0] | command-injection | manual | +| gopkg.in/macaron | Context | true | Redirect | | | Argument[0] | url-redirection[receiver] | manual | +| group:beego | | false | Alert | | | Argument[0..1] | log-injection | manual | +| group:beego | | false | Critical | | | Argument[0..1] | log-injection | manual | +| group:beego | | false | Debug | | | Argument[0..1] | log-injection | manual | +| group:beego | | false | Emergency | | | Argument[0..1] | log-injection | manual | +| group:beego | | false | Error | | | Argument[0..1] | log-injection | manual | +| group:beego | | false | Info | | | Argument[0..1] | log-injection | manual | +| group:beego | | false | Informational | | | Argument[0..1] | log-injection | manual | +| group:beego | | false | Notice | | | Argument[0..1] | log-injection | manual | +| group:beego | | false | Trace | | | Argument[0..1] | log-injection | manual | +| group:beego | | false | Walk | | | Argument[1] | path-injection | manual | +| group:beego | | false | Warn | | | Argument[0..1] | log-injection | manual | +| group:beego | | false | Warning | | | Argument[0..1] | log-injection | manual | +| group:beego | Controller | true | Redirect | | | Argument[0] | url-redirection | manual | +| group:beego | Controller | true | SaveToFile | | | Argument[1] | path-injection | manual | +| group:beego | Controller | true | SaveToFileWithBuffer | | | Argument[1] | path-injection | manual | +| group:beego | FileSystem | true | Open | | | Argument[0] | path-injection | manual | +| group:beego-context | BeegoOutput | true | Download | | | Argument[0] | path-injection | manual | +| group:beego-context | Context | true | Redirect | | | Argument[1] | url-redirection | manual | +| group:beego-logs | | false | Alert | | | Argument[0..1] | log-injection | manual | +| group:beego-logs | | false | Critical | | | Argument[0..1] | log-injection | manual | +| group:beego-logs | | false | Debug | | | Argument[0..1] | log-injection | manual | +| group:beego-logs | | false | Emergency | | | Argument[0..1] | log-injection | manual | +| group:beego-logs | | false | Error | | | Argument[0..1] | log-injection | manual | +| group:beego-logs | | false | Info | | | Argument[0..1] | log-injection | manual | +| group:beego-logs | | false | Informational | | | Argument[0..1] | log-injection | manual | +| group:beego-logs | | false | Notice | | | Argument[0..1] | log-injection | manual | +| group:beego-logs | | false | Trace | | | Argument[0..1] | log-injection | manual | +| group:beego-logs | | false | Warn | | | Argument[0..1] | log-injection | manual | +| group:beego-logs | | false | Warning | | | Argument[0..1] | log-injection | manual | +| group:beego-logs | BeeLogger | true | Alert | | | Argument[0..1] | log-injection | manual | +| group:beego-logs | BeeLogger | true | Critical | | | Argument[0..1] | log-injection | manual | +| group:beego-logs | BeeLogger | true | Debug | | | Argument[0..1] | log-injection | manual | +| group:beego-logs | BeeLogger | true | Emergency | | | Argument[0..1] | log-injection | manual | +| group:beego-logs | BeeLogger | true | Error | | | Argument[0..1] | log-injection | manual | +| group:beego-logs | BeeLogger | true | Info | | | Argument[0..1] | log-injection | manual | +| group:beego-logs | BeeLogger | true | Informational | | | Argument[0..1] | log-injection | manual | +| group:beego-logs | BeeLogger | true | Notice | | | Argument[0..1] | log-injection | manual | +| group:beego-logs | BeeLogger | true | Trace | | | Argument[0..1] | log-injection | manual | +| group:beego-logs | BeeLogger | true | Warn | | | Argument[0..1] | log-injection | manual | +| group:beego-logs | BeeLogger | true | Warning | | | Argument[0..1] | log-injection | manual | +| group:beego-orm | Condition | true | Raw | | | Argument[1] | sql-injection | manual | +| group:beego-orm | DB | true | Exec | | | Argument[0] | sql-injection | manual | +| group:beego-orm | DB | true | ExecContext | | | Argument[1] | sql-injection | manual | +| group:beego-orm | DB | true | Prepare | | | Argument[0] | sql-injection | manual | +| group:beego-orm | DB | true | PrepareContext | | | Argument[1] | sql-injection | manual | +| group:beego-orm | DB | true | Query | | | Argument[0] | sql-injection | manual | +| group:beego-orm | DB | true | QueryContext | | | Argument[1] | sql-injection | manual | +| group:beego-orm | DB | true | QueryRow | | | Argument[0] | sql-injection | manual | +| group:beego-orm | DB | true | QueryRowContext | | | Argument[1] | sql-injection | manual | +| group:beego-orm | Ormer | true | Raw | | | Argument[0] | sql-injection | manual | +| group:beego-orm | QueryBuilder | true | And | | | Argument[0] | sql-injection | manual | +| group:beego-orm | QueryBuilder | true | Delete | | | Argument[0] | sql-injection | manual | +| group:beego-orm | QueryBuilder | true | From | | | Argument[0] | sql-injection | manual | +| group:beego-orm | QueryBuilder | true | GroupBy | | | Argument[0] | sql-injection | manual | +| group:beego-orm | QueryBuilder | true | Having | | | Argument[0] | sql-injection | manual | +| group:beego-orm | QueryBuilder | true | In | | | Argument[0] | sql-injection | manual | +| group:beego-orm | QueryBuilder | true | InnerJoin | | | Argument[0] | sql-injection | manual | +| group:beego-orm | QueryBuilder | true | InsertInto | | | Argument[0..1] | sql-injection | manual | +| group:beego-orm | QueryBuilder | true | LeftJoin | | | Argument[0] | sql-injection | manual | +| group:beego-orm | QueryBuilder | true | On | | | Argument[0] | sql-injection | manual | +| group:beego-orm | QueryBuilder | true | Or | | | Argument[0] | sql-injection | manual | +| group:beego-orm | QueryBuilder | true | OrderBy | | | Argument[0] | sql-injection | manual | +| group:beego-orm | QueryBuilder | true | RightJoin | | | Argument[0] | sql-injection | manual | +| group:beego-orm | QueryBuilder | true | Select | | | Argument[0] | sql-injection | manual | +| group:beego-orm | QueryBuilder | true | Set | | | Argument[0] | sql-injection | manual | +| group:beego-orm | QueryBuilder | true | Subquery | | | Argument[0..1] | sql-injection | manual | +| group:beego-orm | QueryBuilder | true | Update | | | Argument[0] | sql-injection | manual | +| group:beego-orm | QueryBuilder | true | Values | | | Argument[0] | sql-injection | manual | +| group:beego-orm | QueryBuilder | true | Where | | | Argument[0] | sql-injection | manual | +| group:beego-orm | QuerySeter | true | FilterRaw | | | Argument[1] | sql-injection | manual | +| group:beego-utils | | false | Display | | | Argument[0] | log-injection | manual | +| group:clever-go | Context | true | Redirect | | | Argument[1] | url-redirection[receiver] | manual | +| group:glog | | false | Error | | | Argument[0] | log-injection | manual | +| group:glog | | false | ErrorContext | | | Argument[1] | log-injection | manual | +| group:glog | | false | ErrorContextDepth | | | Argument[2] | log-injection | manual | +| group:glog | | false | ErrorContextDepthf | | | Argument[2..3] | log-injection | manual | +| group:glog | | false | ErrorContextf | | | Argument[1..2] | log-injection | manual | +| group:glog | | false | ErrorDepth | | | Argument[1] | log-injection | manual | +| group:glog | | false | ErrorDepthf | | | Argument[1..2] | log-injection | manual | +| group:glog | | false | Errorf | | | Argument[0..1] | log-injection | manual | +| group:glog | | false | Errorln | | | Argument[0] | log-injection | manual | +| group:glog | | false | Exit | | | Argument[0] | log-injection | manual | +| group:glog | | false | ExitContext | | | Argument[1] | log-injection | manual | +| group:glog | | false | ExitContextDepth | | | Argument[2] | log-injection | manual | +| group:glog | | false | ExitContextDepthf | | | Argument[2..3] | log-injection | manual | +| group:glog | | false | ExitContextf | | | Argument[1..2] | log-injection | manual | +| group:glog | | false | ExitDepth | | | Argument[1] | log-injection | manual | +| group:glog | | false | ExitDepthf | | | Argument[1..2] | log-injection | manual | +| group:glog | | false | Exitf | | | Argument[0..1] | log-injection | manual | +| group:glog | | false | Exitln | | | Argument[0] | log-injection | manual | +| group:glog | | false | Fatal | | | Argument[0] | log-injection | manual | +| group:glog | | false | FatalContext | | | Argument[1] | log-injection | manual | +| group:glog | | false | FatalContextDepth | | | Argument[2] | log-injection | manual | +| group:glog | | false | FatalContextDepthf | | | Argument[2..3] | log-injection | manual | +| group:glog | | false | FatalContextf | | | Argument[1..2] | log-injection | manual | +| group:glog | | false | FatalDepth | | | Argument[1] | log-injection | manual | +| group:glog | | false | FatalDepthf | | | Argument[1..2] | log-injection | manual | +| group:glog | | false | Fatalf | | | Argument[0..1] | log-injection | manual | +| group:glog | | false | Fatalln | | | Argument[0] | log-injection | manual | +| group:glog | | false | Info | | | Argument[0] | log-injection | manual | +| group:glog | | false | InfoContext | | | Argument[1] | log-injection | manual | +| group:glog | | false | InfoContextDepth | | | Argument[2] | log-injection | manual | +| group:glog | | false | InfoContextDepthf | | | Argument[2..3] | log-injection | manual | +| group:glog | | false | InfoContextf | | | Argument[1..2] | log-injection | manual | +| group:glog | | false | InfoDepth | | | Argument[1] | log-injection | manual | +| group:glog | | false | InfoDepthf | | | Argument[1..2] | log-injection | manual | +| group:glog | | false | Infof | | | Argument[0..1] | log-injection | manual | +| group:glog | | false | Infoln | | | Argument[0] | log-injection | manual | +| group:glog | | false | Warning | | | Argument[0] | log-injection | manual | +| group:glog | | false | WarningContext | | | Argument[1] | log-injection | manual | +| group:glog | | false | WarningContextDepth | | | Argument[2] | log-injection | manual | +| group:glog | | false | WarningContextDepthf | | | Argument[2..3] | log-injection | manual | +| group:glog | | false | WarningContextf | | | Argument[1..2] | log-injection | manual | +| group:glog | | false | WarningDepth | | | Argument[1] | log-injection | manual | +| group:glog | | false | WarningDepthf | | | Argument[1..2] | log-injection | manual | +| group:glog | | false | Warningf | | | Argument[0..1] | log-injection | manual | +| group:glog | | false | Warningln | | | Argument[0] | log-injection | manual | +| group:glog | Verbose | true | Error | | | Argument[0] | log-injection | manual | +| group:glog | Verbose | true | ErrorContext | | | Argument[1] | log-injection | manual | +| group:glog | Verbose | true | ErrorContextDepth | | | Argument[2] | log-injection | manual | +| group:glog | Verbose | true | ErrorContextDepthf | | | Argument[2..3] | log-injection | manual | +| group:glog | Verbose | true | ErrorContextf | | | Argument[1..2] | log-injection | manual | +| group:glog | Verbose | true | ErrorDepth | | | Argument[1] | log-injection | manual | +| group:glog | Verbose | true | ErrorDepthf | | | Argument[1..2] | log-injection | manual | +| group:glog | Verbose | true | Errorf | | | Argument[0..1] | log-injection | manual | +| group:glog | Verbose | true | Errorln | | | Argument[0] | log-injection | manual | +| group:glog | Verbose | true | Exit | | | Argument[0] | log-injection | manual | +| group:glog | Verbose | true | ExitContext | | | Argument[1] | log-injection | manual | +| group:glog | Verbose | true | ExitContextDepth | | | Argument[2] | log-injection | manual | +| group:glog | Verbose | true | ExitContextDepthf | | | Argument[2..3] | log-injection | manual | +| group:glog | Verbose | true | ExitContextf | | | Argument[1..2] | log-injection | manual | +| group:glog | Verbose | true | ExitDepth | | | Argument[1] | log-injection | manual | +| group:glog | Verbose | true | ExitDepthf | | | Argument[1..2] | log-injection | manual | +| group:glog | Verbose | true | Exitf | | | Argument[0..1] | log-injection | manual | +| group:glog | Verbose | true | Exitln | | | Argument[0] | log-injection | manual | +| group:glog | Verbose | true | Fatal | | | Argument[0] | log-injection | manual | +| group:glog | Verbose | true | FatalContext | | | Argument[1] | log-injection | manual | +| group:glog | Verbose | true | FatalContextDepth | | | Argument[2] | log-injection | manual | +| group:glog | Verbose | true | FatalContextDepthf | | | Argument[2..3] | log-injection | manual | +| group:glog | Verbose | true | FatalContextf | | | Argument[1..2] | log-injection | manual | +| group:glog | Verbose | true | FatalDepth | | | Argument[1] | log-injection | manual | +| group:glog | Verbose | true | FatalDepthf | | | Argument[1..2] | log-injection | manual | +| group:glog | Verbose | true | Fatalf | | | Argument[0..1] | log-injection | manual | +| group:glog | Verbose | true | Fatalln | | | Argument[0] | log-injection | manual | +| group:glog | Verbose | true | Info | | | Argument[0] | log-injection | manual | +| group:glog | Verbose | true | InfoContext | | | Argument[1] | log-injection | manual | +| group:glog | Verbose | true | InfoContextDepth | | | Argument[2] | log-injection | manual | +| group:glog | Verbose | true | InfoContextDepthf | | | Argument[2..3] | log-injection | manual | +| group:glog | Verbose | true | InfoContextf | | | Argument[1..2] | log-injection | manual | +| group:glog | Verbose | true | InfoDepth | | | Argument[1] | log-injection | manual | +| group:glog | Verbose | true | InfoDepthf | | | Argument[1..2] | log-injection | manual | +| group:glog | Verbose | true | Infof | | | Argument[0..1] | log-injection | manual | +| group:glog | Verbose | true | Infoln | | | Argument[0] | log-injection | manual | +| group:glog | Verbose | true | Warning | | | Argument[0] | log-injection | manual | +| group:glog | Verbose | true | WarningContext | | | Argument[1] | log-injection | manual | +| group:glog | Verbose | true | WarningContextDepth | | | Argument[2] | log-injection | manual | +| group:glog | Verbose | true | WarningContextDepthf | | | Argument[2..3] | log-injection | manual | +| group:glog | Verbose | true | WarningContextf | | | Argument[1..2] | log-injection | manual | +| group:glog | Verbose | true | WarningDepth | | | Argument[1] | log-injection | manual | +| group:glog | Verbose | true | WarningDepthf | | | Argument[1..2] | log-injection | manual | +| group:glog | Verbose | true | Warningf | | | Argument[0..1] | log-injection | manual | +| group:glog | Verbose | true | Warningln | | | Argument[0] | log-injection | manual | +| group:go-jose | Recipient | true | Key | | | | credentials-key | manual | +| group:go-jose | SigningKey | true | Key | | | | credentials-key | manual | +| group:go-jose/jwt | JSONWebToken | true | UnsafeClaimsWithoutVerification | | | Argument[receiver] | jwt | manual | +| group:gocb1 | Bucket | true | ExecuteAnalyticsQuery | | | Argument[0] | nosql-injection | manual | +| group:gocb1 | Bucket | true | ExecuteN1qlQuery | | | Argument[0] | nosql-injection | manual | +| group:gocb1 | Cluster | true | ExecuteAnalyticsQuery | | | Argument[0] | nosql-injection | manual | +| group:gocb1 | Cluster | true | ExecuteN1qlQuery | | | Argument[0] | nosql-injection | manual | +| group:gocb2 | Cluster | true | AnalyticsQuery | | | Argument[0] | nosql-injection | manual | +| group:gocb2 | Cluster | true | Query | | | Argument[0] | nosql-injection | manual | +| group:gocb2 | Scope | true | AnalyticsQuery | | | Argument[0] | nosql-injection | manual | +| group:gocb2 | Scope | true | Query | | | Argument[0] | nosql-injection | manual | +| group:gokogiri/xml | Node | true | EvalXPath | | | Argument[0] | xpath-injection | manual | +| group:gokogiri/xml | Node | true | EvalXPathAsBoolean | | | Argument[0] | xpath-injection | manual | +| group:gokogiri/xml | Node | true | Search | | | Argument[0] | xpath-injection | manual | +| group:gokogiri/xml | Node | true | SearchWithVariables | | | Argument[0] | xpath-injection | manual | +| group:gokogiri/xpath | | false | Compile | | | Argument[0] | xpath-injection | manual | +| group:gorm | DB | true | Distinct | | | Argument[0] | sql-injection | manual | +| group:gorm | DB | true | Exec | | | Argument[0] | sql-injection | manual | +| group:gorm | DB | true | Group | | | Argument[0] | sql-injection | manual | +| group:gorm | DB | true | Having | | | Argument[0] | sql-injection | manual | +| group:gorm | DB | true | Joins | | | Argument[0] | sql-injection | manual | +| group:gorm | DB | true | Not | | | Argument[0] | sql-injection | manual | +| group:gorm | DB | true | Or | | | Argument[0] | sql-injection | manual | +| group:gorm | DB | true | Order | | | Argument[0] | sql-injection | manual | +| group:gorm | DB | true | Pluck | | | Argument[0] | sql-injection | manual | +| group:gorm | DB | true | Raw | | | Argument[0] | sql-injection | manual | +| group:gorm | DB | true | Select | | | Argument[0] | sql-injection | manual | +| group:gorm | DB | true | Table | | | Argument[0] | sql-injection | manual | +| group:gorm | DB | true | Where | | | Argument[0] | sql-injection | manual | +| group:gorqlite | Connection | true | Query | | | Argument[0] | sql-injection | manual | +| group:gorqlite | Connection | true | QueryContext | | | Argument[1] | sql-injection | manual | +| group:gorqlite | Connection | true | QueryOne | | | Argument[0] | sql-injection | manual | +| group:gorqlite | Connection | true | QueryOneContext | | | Argument[1] | sql-injection | manual | +| group:gorqlite | Connection | true | QueryOneParameterized | | | Argument[0] | sql-injection | manual | +| group:gorqlite | Connection | true | QueryOneParameterizedContext | | | Argument[1] | sql-injection | manual | +| group:gorqlite | Connection | true | QueryParameterized | | | Argument[0] | sql-injection | manual | +| group:gorqlite | Connection | true | QueryParameterizedContext | | | Argument[1] | sql-injection | manual | +| group:gorqlite | Connection | true | Queue | | | Argument[0] | sql-injection | manual | +| group:gorqlite | Connection | true | QueueContext | | | Argument[1] | sql-injection | manual | +| group:gorqlite | Connection | true | QueueOne | | | Argument[0] | sql-injection | manual | +| group:gorqlite | Connection | true | QueueOneContext | | | Argument[1] | sql-injection | manual | +| group:gorqlite | Connection | true | QueueOneParameterized | | | Argument[0] | sql-injection | manual | +| group:gorqlite | Connection | true | QueueOneParameterizedContext | | | Argument[1] | sql-injection | manual | +| group:gorqlite | Connection | true | QueueParameterized | | | Argument[0] | sql-injection | manual | +| group:gorqlite | Connection | true | QueueParameterizedContext | | | Argument[1] | sql-injection | manual | +| group:gorqlite | Connection | true | Write | | | Argument[0] | sql-injection | manual | +| group:gorqlite | Connection | true | WriteContext | | | Argument[1] | sql-injection | manual | +| group:gorqlite | Connection | true | WriteOne | | | Argument[0] | sql-injection | manual | +| group:gorqlite | Connection | true | WriteOneContext | | | Argument[1] | sql-injection | manual | +| group:gorqlite | Connection | true | WriteOneParameterized | | | Argument[0] | sql-injection | manual | +| group:gorqlite | Connection | true | WriteOneParameterizedContext | | | Argument[1] | sql-injection | manual | +| group:gorqlite | Connection | true | WriteParameterized | | | Argument[0] | sql-injection | manual | +| group:gorqlite | Connection | true | WriteParameterizedContext | | | Argument[1] | sql-injection | manual | +| group:iris-context | Context | true | SaveFormFile | | | Argument[1] | path-injection | manual | +| group:iris-context | Context | true | SendFile | | | Argument[0] | path-injection | manual | +| group:iris-context | Context | true | SendFileWithRate | | | Argument[0] | path-injection | manual | +| group:iris-context | Context | true | ServeFile | | | Argument[0] | path-injection | manual | +| group:iris-context | Context | true | ServeFileWithRate | | | Argument[0] | path-injection | manual | +| group:iris-context | Context | true | UploadFormFiles | | | Argument[0] | path-injection | manual | +| group:logrus | | false | Debug | | | Argument[0] | log-injection | manual | +| group:logrus | | false | DebugFn | | | Argument[0] | log-injection | manual | +| group:logrus | | false | Debugf | | | Argument[0..1] | log-injection | manual | +| group:logrus | | false | Debugln | | | Argument[0] | log-injection | manual | +| group:logrus | | false | Error | | | Argument[0] | log-injection | manual | +| group:logrus | | false | ErrorFn | | | Argument[0] | log-injection | manual | +| group:logrus | | false | Errorf | | | Argument[0..1] | log-injection | manual | +| group:logrus | | false | Errorln | | | Argument[0] | log-injection | manual | +| group:logrus | | false | Fatal | | | Argument[0] | log-injection | manual | +| group:logrus | | false | FatalFn | | | Argument[0] | log-injection | manual | +| group:logrus | | false | Fatalf | | | Argument[0..1] | log-injection | manual | +| group:logrus | | false | Fatalln | | | Argument[0] | log-injection | manual | +| group:logrus | | false | Info | | | Argument[0] | log-injection | manual | +| group:logrus | | false | InfoFn | | | Argument[0] | log-injection | manual | +| group:logrus | | false | Infof | | | Argument[0..1] | log-injection | manual | +| group:logrus | | false | Infoln | | | Argument[0] | log-injection | manual | +| group:logrus | | false | Panic | | | Argument[0] | log-injection | manual | +| group:logrus | | false | PanicFn | | | Argument[0] | log-injection | manual | +| group:logrus | | false | Panicf | | | Argument[0..1] | log-injection | manual | +| group:logrus | | false | Panicln | | | Argument[0] | log-injection | manual | +| group:logrus | | false | Print | | | Argument[0] | log-injection | manual | +| group:logrus | | false | PrintFn | | | Argument[0] | log-injection | manual | +| group:logrus | | false | Printf | | | Argument[0..1] | log-injection | manual | +| group:logrus | | false | Println | | | Argument[0] | log-injection | manual | +| group:logrus | | false | Trace | | | Argument[0] | log-injection | manual | +| group:logrus | | false | TraceFn | | | Argument[0] | log-injection | manual | +| group:logrus | | false | Tracef | | | Argument[0..1] | log-injection | manual | +| group:logrus | | false | Traceln | | | Argument[0] | log-injection | manual | +| group:logrus | | false | Warn | | | Argument[0] | log-injection | manual | +| group:logrus | | false | WarnFn | | | Argument[0] | log-injection | manual | +| group:logrus | | false | Warnf | | | Argument[0..1] | log-injection | manual | +| group:logrus | | false | Warning | | | Argument[0] | log-injection | manual | +| group:logrus | | false | WarningFn | | | Argument[0] | log-injection | manual | +| group:logrus | | false | Warningf | | | Argument[0..1] | log-injection | manual | +| group:logrus | | false | Warningln | | | Argument[0] | log-injection | manual | +| group:logrus | | false | Warnln | | | Argument[0] | log-injection | manual | +| group:logrus | | false | WithError | | | Argument[0] | log-injection | manual | +| group:logrus | | false | WithField | | | Argument[0..1] | log-injection | manual | +| group:logrus | | false | WithFields | | | Argument[0] | log-injection | manual | +| group:logrus | | false | WithTime | | | Argument[0] | log-injection | manual | +| group:logrus | Entry | true | Debug | | | Argument[0] | log-injection | manual | +| group:logrus | Entry | true | Debugf | | | Argument[0..1] | log-injection | manual | +| group:logrus | Entry | true | Debugln | | | Argument[0] | log-injection | manual | +| group:logrus | Entry | true | Error | | | Argument[0] | log-injection | manual | +| group:logrus | Entry | true | Errorf | | | Argument[0..1] | log-injection | manual | +| group:logrus | Entry | true | Errorln | | | Argument[0] | log-injection | manual | +| group:logrus | Entry | true | Fatal | | | Argument[0] | log-injection | manual | +| group:logrus | Entry | true | Fatalf | | | Argument[0..1] | log-injection | manual | +| group:logrus | Entry | true | Fatalln | | | Argument[0] | log-injection | manual | +| group:logrus | Entry | true | Info | | | Argument[0] | log-injection | manual | +| group:logrus | Entry | true | Infof | | | Argument[0..1] | log-injection | manual | +| group:logrus | Entry | true | Infoln | | | Argument[0] | log-injection | manual | +| group:logrus | Entry | true | Log | | | Argument[1] | log-injection | manual | +| group:logrus | Entry | true | Logf | | | Argument[1..2] | log-injection | manual | +| group:logrus | Entry | true | Logln | | | Argument[1] | log-injection | manual | +| group:logrus | Entry | true | Panic | | | Argument[0] | log-injection | manual | +| group:logrus | Entry | true | Panicf | | | Argument[0..1] | log-injection | manual | +| group:logrus | Entry | true | Panicln | | | Argument[0] | log-injection | manual | +| group:logrus | Entry | true | Print | | | Argument[0] | log-injection | manual | +| group:logrus | Entry | true | Printf | | | Argument[0..1] | log-injection | manual | +| group:logrus | Entry | true | Println | | | Argument[0] | log-injection | manual | +| group:logrus | Entry | true | Trace | | | Argument[0] | log-injection | manual | +| group:logrus | Entry | true | Tracef | | | Argument[0..1] | log-injection | manual | +| group:logrus | Entry | true | Traceln | | | Argument[0] | log-injection | manual | +| group:logrus | Entry | true | Warn | | | Argument[0] | log-injection | manual | +| group:logrus | Entry | true | Warnf | | | Argument[0..1] | log-injection | manual | +| group:logrus | Entry | true | Warning | | | Argument[0] | log-injection | manual | +| group:logrus | Entry | true | Warningf | | | Argument[0..1] | log-injection | manual | +| group:logrus | Entry | true | Warningln | | | Argument[0] | log-injection | manual | +| group:logrus | Entry | true | Warnln | | | Argument[0] | log-injection | manual | +| group:logrus | Entry | true | WithError | | | Argument[0] | log-injection | manual | +| group:logrus | Entry | true | WithField | | | Argument[0..1] | log-injection | manual | +| group:logrus | Entry | true | WithFields | | | Argument[0] | log-injection | manual | +| group:logrus | Entry | true | WithTime | | | Argument[0] | log-injection | manual | +| group:logrus | FieldLogger | true | Debug | | | Argument[0] | log-injection | manual | +| group:logrus | FieldLogger | true | Debugf | | | Argument[0..1] | log-injection | manual | +| group:logrus | FieldLogger | true | Debugln | | | Argument[0] | log-injection | manual | +| group:logrus | FieldLogger | true | Error | | | Argument[0] | log-injection | manual | +| group:logrus | FieldLogger | true | Errorf | | | Argument[0..1] | log-injection | manual | +| group:logrus | FieldLogger | true | Errorln | | | Argument[0] | log-injection | manual | +| group:logrus | FieldLogger | true | Fatal | | | Argument[0] | log-injection | manual | +| group:logrus | FieldLogger | true | Fatalf | | | Argument[0..1] | log-injection | manual | +| group:logrus | FieldLogger | true | Fatalln | | | Argument[0] | log-injection | manual | +| group:logrus | FieldLogger | true | Info | | | Argument[0] | log-injection | manual | +| group:logrus | FieldLogger | true | Infof | | | Argument[0..1] | log-injection | manual | +| group:logrus | FieldLogger | true | Infoln | | | Argument[0] | log-injection | manual | +| group:logrus | FieldLogger | true | Panic | | | Argument[0] | log-injection | manual | +| group:logrus | FieldLogger | true | Panicf | | | Argument[0..1] | log-injection | manual | +| group:logrus | FieldLogger | true | Panicln | | | Argument[0] | log-injection | manual | +| group:logrus | FieldLogger | true | Print | | | Argument[0] | log-injection | manual | +| group:logrus | FieldLogger | true | Printf | | | Argument[0..1] | log-injection | manual | +| group:logrus | FieldLogger | true | Println | | | Argument[0] | log-injection | manual | +| group:logrus | FieldLogger | true | Warn | | | Argument[0] | log-injection | manual | +| group:logrus | FieldLogger | true | Warnf | | | Argument[0..1] | log-injection | manual | +| group:logrus | FieldLogger | true | Warning | | | Argument[0] | log-injection | manual | +| group:logrus | FieldLogger | true | Warningf | | | Argument[0..1] | log-injection | manual | +| group:logrus | FieldLogger | true | Warningln | | | Argument[0] | log-injection | manual | +| group:logrus | FieldLogger | true | Warnln | | | Argument[0] | log-injection | manual | +| group:logrus | FieldLogger | true | WithError | | | Argument[0] | log-injection | manual | +| group:logrus | FieldLogger | true | WithField | | | Argument[0..1] | log-injection | manual | +| group:logrus | FieldLogger | true | WithFields | | | Argument[0] | log-injection | manual | +| group:logrus | Logger | true | Debug | | | Argument[0] | log-injection | manual | +| group:logrus | Logger | true | DebugFn | | | Argument[0] | log-injection | manual | +| group:logrus | Logger | true | Debugf | | | Argument[0..1] | log-injection | manual | +| group:logrus | Logger | true | Debugln | | | Argument[0] | log-injection | manual | +| group:logrus | Logger | true | Error | | | Argument[0] | log-injection | manual | +| group:logrus | Logger | true | ErrorFn | | | Argument[0] | log-injection | manual | +| group:logrus | Logger | true | Errorf | | | Argument[0..1] | log-injection | manual | +| group:logrus | Logger | true | Errorln | | | Argument[0] | log-injection | manual | +| group:logrus | Logger | true | Fatal | | | Argument[0] | log-injection | manual | +| group:logrus | Logger | true | FatalFn | | | Argument[0] | log-injection | manual | +| group:logrus | Logger | true | Fatalf | | | Argument[0..1] | log-injection | manual | +| group:logrus | Logger | true | Fatalln | | | Argument[0] | log-injection | manual | +| group:logrus | Logger | true | Info | | | Argument[0] | log-injection | manual | +| group:logrus | Logger | true | InfoFn | | | Argument[0] | log-injection | manual | +| group:logrus | Logger | true | Infof | | | Argument[0..1] | log-injection | manual | +| group:logrus | Logger | true | Infoln | | | Argument[0] | log-injection | manual | +| group:logrus | Logger | true | Log | | | Argument[1] | log-injection | manual | +| group:logrus | Logger | true | LogFn | | | Argument[1] | log-injection | manual | +| group:logrus | Logger | true | Logf | | | Argument[1..2] | log-injection | manual | +| group:logrus | Logger | true | Logln | | | Argument[1] | log-injection | manual | +| group:logrus | Logger | true | Panic | | | Argument[0] | log-injection | manual | +| group:logrus | Logger | true | PanicFn | | | Argument[0] | log-injection | manual | +| group:logrus | Logger | true | Panicf | | | Argument[0..1] | log-injection | manual | +| group:logrus | Logger | true | Panicln | | | Argument[0] | log-injection | manual | +| group:logrus | Logger | true | Print | | | Argument[0] | log-injection | manual | +| group:logrus | Logger | true | PrintFn | | | Argument[0] | log-injection | manual | +| group:logrus | Logger | true | Printf | | | Argument[0..1] | log-injection | manual | +| group:logrus | Logger | true | Println | | | Argument[0] | log-injection | manual | +| group:logrus | Logger | true | Trace | | | Argument[0] | log-injection | manual | +| group:logrus | Logger | true | TraceFn | | | Argument[0] | log-injection | manual | +| group:logrus | Logger | true | Tracef | | | Argument[0..1] | log-injection | manual | +| group:logrus | Logger | true | Traceln | | | Argument[0] | log-injection | manual | +| group:logrus | Logger | true | Warn | | | Argument[0] | log-injection | manual | +| group:logrus | Logger | true | WarnFn | | | Argument[0] | log-injection | manual | +| group:logrus | Logger | true | Warnf | | | Argument[0..1] | log-injection | manual | +| group:logrus | Logger | true | Warning | | | Argument[0] | log-injection | manual | +| group:logrus | Logger | true | WarningFn | | | Argument[0] | log-injection | manual | +| group:logrus | Logger | true | Warningf | | | Argument[0..1] | log-injection | manual | +| group:logrus | Logger | true | Warningln | | | Argument[0] | log-injection | manual | +| group:logrus | Logger | true | Warnln | | | Argument[0] | log-injection | manual | +| group:logrus | Logger | true | WithError | | | Argument[0] | log-injection | manual | +| group:logrus | Logger | true | WithField | | | Argument[0..1] | log-injection | manual | +| group:logrus | Logger | true | WithFields | | | Argument[0] | log-injection | manual | +| group:logrus | Logger | true | WithTime | | | Argument[0] | log-injection | manual | +| group:revel | Controller | true | Redirect | | | Argument[0] | url-redirection | manual | +| group:revel | Controller | true | RenderFileName | | | Argument[0] | path-injection | manual | +| group:squirrel | | false | Delete | | | Argument[0] | sql-injection | manual | +| group:squirrel | | false | Expr | | | Argument[0] | sql-injection | manual | +| group:squirrel | | false | Insert | | | Argument[0] | sql-injection | manual | +| group:squirrel | | false | Select | | | Argument[0] | sql-injection | manual | +| group:squirrel | | false | Update | | | Argument[0] | sql-injection | manual | +| group:squirrel | DeleteBuilder | true | From | | | Argument[0] | sql-injection | manual | +| group:squirrel | DeleteBuilder | true | OrderBy | | | Argument[0] | sql-injection | manual | +| group:squirrel | DeleteBuilder | true | Prefix | | | Argument[0] | sql-injection | manual | +| group:squirrel | DeleteBuilder | true | Suffix | | | Argument[0] | sql-injection | manual | +| group:squirrel | InsertBuilder | true | Columns | | | Argument[0] | sql-injection | manual | +| group:squirrel | InsertBuilder | true | Into | | | Argument[0] | sql-injection | manual | +| group:squirrel | InsertBuilder | true | Options | | | Argument[0] | sql-injection | manual | +| group:squirrel | InsertBuilder | true | Prefix | | | Argument[0] | sql-injection | manual | +| group:squirrel | InsertBuilder | true | Suffix | | | Argument[0] | sql-injection | manual | +| group:squirrel | SelectBuilder | true | Column | | | Argument[0] | sql-injection | manual | +| group:squirrel | SelectBuilder | true | Columns | | | Argument[0] | sql-injection | manual | +| group:squirrel | SelectBuilder | true | CrossJoin | | | Argument[0] | sql-injection | manual | +| group:squirrel | SelectBuilder | true | From | | | Argument[0] | sql-injection | manual | +| group:squirrel | SelectBuilder | true | GroupBy | | | Argument[0] | sql-injection | manual | +| group:squirrel | SelectBuilder | true | InnerJoin | | | Argument[0] | sql-injection | manual | +| group:squirrel | SelectBuilder | true | LeftJoin | | | Argument[0] | sql-injection | manual | +| group:squirrel | SelectBuilder | true | Options | | | Argument[0] | sql-injection | manual | +| group:squirrel | SelectBuilder | true | OrderBy | | | Argument[0] | sql-injection | manual | +| group:squirrel | SelectBuilder | true | Prefix | | | Argument[0] | sql-injection | manual | +| group:squirrel | SelectBuilder | true | RightJoin | | | Argument[0] | sql-injection | manual | +| group:squirrel | SelectBuilder | true | Suffix | | | Argument[0] | sql-injection | manual | +| group:squirrel | UpdateBuilder | true | From | | | Argument[0] | sql-injection | manual | +| group:squirrel | UpdateBuilder | true | OrderBy | | | Argument[0] | sql-injection | manual | +| group:squirrel | UpdateBuilder | true | Prefix | | | Argument[0] | sql-injection | manual | +| group:squirrel | UpdateBuilder | true | Set | | | Argument[0] | sql-injection | manual | +| group:squirrel | UpdateBuilder | true | Suffix | | | Argument[0] | sql-injection | manual | +| group:squirrel | UpdateBuilder | true | Table | | | Argument[0] | sql-injection | manual | +| group:xmlpath | | false | Compile | | | Argument[0] | xpath-injection | manual | +| group:xmlpath | | false | MustCompile | | | Argument[0] | xpath-injection | manual | +| group:xorm | Engine | true | Alias | | | Argument[0] | sql-injection | manual | +| group:xorm | Engine | true | And | | | Argument[0] | sql-injection | manual | +| group:xorm | Engine | true | GroupBy | | | Argument[0] | sql-injection | manual | +| group:xorm | Engine | true | Having | | | Argument[0] | sql-injection | manual | +| group:xorm | Engine | true | In | | | Argument[0] | sql-injection | manual | +| group:xorm | Engine | true | Join | | | Argument[0..2] | sql-injection | manual | +| group:xorm | Engine | true | NotIn | | | Argument[0] | sql-injection | manual | +| group:xorm | Engine | true | Or | | | Argument[0] | sql-injection | manual | +| group:xorm | Engine | true | OrderBy | | | Argument[0] | sql-injection | manual | +| group:xorm | Engine | true | SQL | | | Argument[0] | sql-injection | manual | +| group:xorm | Engine | true | Select | | | Argument[0] | sql-injection | manual | +| group:xorm | Engine | true | SetExpr | | | Argument[0] | sql-injection | manual | +| group:xorm | Engine | true | Sum | | | Argument[1] | sql-injection | manual | +| group:xorm | Engine | true | SumInt | | | Argument[1] | sql-injection | manual | +| group:xorm | Engine | true | Sums | | | Argument[1] | sql-injection | manual | +| group:xorm | Engine | true | SumsInt | | | Argument[1] | sql-injection | manual | +| group:xorm | Engine | true | Where | | | Argument[0] | sql-injection | manual | +| group:xorm | Session | true | Alias | | | Argument[0] | sql-injection | manual | +| group:xorm | Session | true | And | | | Argument[0] | sql-injection | manual | +| group:xorm | Session | true | GroupBy | | | Argument[0] | sql-injection | manual | +| group:xorm | Session | true | Having | | | Argument[0] | sql-injection | manual | +| group:xorm | Session | true | In | | | Argument[0] | sql-injection | manual | +| group:xorm | Session | true | Join | | | Argument[0..2] | sql-injection | manual | +| group:xorm | Session | true | NotIn | | | Argument[0] | sql-injection | manual | +| group:xorm | Session | true | Or | | | Argument[0] | sql-injection | manual | +| group:xorm | Session | true | OrderBy | | | Argument[0] | sql-injection | manual | +| group:xorm | Session | true | SQL | | | Argument[0] | sql-injection | manual | +| group:xorm | Session | true | Select | | | Argument[0] | sql-injection | manual | +| group:xorm | Session | true | SetExpr | | | Argument[0] | sql-injection | manual | +| group:xorm | Session | true | Sum | | | Argument[1] | sql-injection | manual | +| group:xorm | Session | true | SumInt | | | Argument[1] | sql-injection | manual | +| group:xorm | Session | true | Sums | | | Argument[1] | sql-injection | manual | +| group:xorm | Session | true | SumsInt | | | Argument[1] | sql-injection | manual | +| group:xorm | Session | true | Where | | | Argument[0] | sql-injection | manual | +| io/ioutil | | false | ReadDir | | | Argument[0] | path-injection | manual | +| io/ioutil | | false | ReadFile | | | Argument[0] | path-injection | manual | +| io/ioutil | | false | TempDir | | | Argument[0..1] | path-injection | manual | +| io/ioutil | | false | TempFile | | | Argument[0..1] | path-injection | manual | +| io/ioutil | | false | WriteFile | | | Argument[0] | path-injection | manual | +| log | | false | Fatal | | | Argument[0] | log-injection | manual | +| log | | false | Fatalf | | | Argument[0..1] | log-injection | manual | +| log | | false | Fatalln | | | Argument[0] | log-injection | manual | +| log | | false | Output | | | Argument[1] | log-injection | manual | +| log | | false | Panic | | | Argument[0] | log-injection | manual | +| log | | false | Panicf | | | Argument[0..1] | log-injection | manual | +| log | | false | Panicln | | | Argument[0] | log-injection | manual | +| log | | false | Print | | | Argument[0] | log-injection | manual | +| log | | false | Printf | | | Argument[0..1] | log-injection | manual | +| log | | false | Println | | | Argument[0] | log-injection | manual | +| log | Logger | true | Fatal | | | Argument[0] | log-injection | manual | +| log | Logger | true | Fatalf | | | Argument[0..1] | log-injection | manual | +| log | Logger | true | Fatalln | | | Argument[0] | log-injection | manual | +| log | Logger | true | Output | | | Argument[1] | log-injection | manual | +| log | Logger | true | Panic | | | Argument[0] | log-injection | manual | +| log | Logger | true | Panicf | | | Argument[0..1] | log-injection | manual | +| log | Logger | true | Panicln | | | Argument[0] | log-injection | manual | +| log | Logger | true | Print | | | Argument[0] | log-injection | manual | +| log | Logger | true | Printf | | | Argument[0..1] | log-injection | manual | +| log | Logger | true | Println | | | Argument[0] | log-injection | manual | +| log/slog | | false | Debug | | | Argument[0..1] | log-injection | manual | +| log/slog | | false | DebugContext | | | Argument[1..2] | log-injection | manual | +| log/slog | | false | Error | | | Argument[0..1] | log-injection | manual | +| log/slog | | false | ErrorContext | | | Argument[1..2] | log-injection | manual | +| log/slog | | false | Info | | | Argument[0..1] | log-injection | manual | +| log/slog | | false | InfoContext | | | Argument[1..2] | log-injection | manual | +| log/slog | | false | Log | | | Argument[2..3] | log-injection | manual | +| log/slog | | false | LogAttrs | | | Argument[2..3] | log-injection | manual | +| log/slog | | false | Warn | | | Argument[0..1] | log-injection | manual | +| log/slog | | false | WarnContext | | | Argument[1..2] | log-injection | manual | +| log/slog | | false | With | | | Argument[0] | log-injection | manual | +| log/slog | Logger | true | Debug | | | Argument[0..1] | log-injection | manual | +| log/slog | Logger | true | DebugContext | | | Argument[1..2] | log-injection | manual | +| log/slog | Logger | true | Error | | | Argument[0..1] | log-injection | manual | +| log/slog | Logger | true | ErrorContext | | | Argument[1..2] | log-injection | manual | +| log/slog | Logger | true | Info | | | Argument[0..1] | log-injection | manual | +| log/slog | Logger | true | InfoContext | | | Argument[1..2] | log-injection | manual | +| log/slog | Logger | true | Log | | | Argument[2..3] | log-injection | manual | +| log/slog | Logger | true | LogAttrs | | | Argument[2..3] | log-injection | manual | +| log/slog | Logger | true | Warn | | | Argument[0..1] | log-injection | manual | +| log/slog | Logger | true | WarnContext | | | Argument[1..2] | log-injection | manual | +| log/slog | Logger | true | With | | | Argument[0] | log-injection | manual | +| log/slog | Logger | true | WithGroup | | | Argument[0] | log-injection | manual | +| net/http | | false | Redirect | | | Argument[2] | url-redirection[0] | manual | +| net/http | | false | ServeFile | | | Argument[2] | path-injection | manual | +| os | | false | Chdir | | | Argument[0] | path-injection | manual | +| os | | false | Chmod | | | Argument[0] | path-injection | manual | +| os | | false | Chown | | | Argument[0] | path-injection | manual | +| os | | false | Chtimes | | | Argument[0] | path-injection | manual | +| os | | false | Create | | | Argument[0] | path-injection | manual | +| os | | false | CreateTemp | | | Argument[0] | path-injection | manual | +| os | | false | DirFS | | | Argument[0] | path-injection | manual | +| os | | false | Lchown | | | Argument[0] | path-injection | manual | +| os | | false | Link | | | Argument[0..1] | path-injection | manual | +| os | | false | Lstat | | | Argument[0] | path-injection | manual | +| os | | false | Mkdir | | | Argument[0] | path-injection | manual | +| os | | false | MkdirAll | | | Argument[0] | path-injection | manual | +| os | | false | MkdirTemp | | | Argument[0..1] | path-injection | manual | +| os | | false | NewFile | | | Argument[1] | path-injection | manual | +| os | | false | Open | | | Argument[0] | path-injection | manual | +| os | | false | OpenFile | | | Argument[0] | path-injection | manual | +| os | | false | ReadDir | | | Argument[0] | path-injection | manual | +| os | | false | ReadFile | | | Argument[0] | path-injection | manual | +| os | | false | Readlink | | | Argument[0] | path-injection | manual | +| os | | false | Remove | | | Argument[0] | path-injection | manual | +| os | | false | RemoveAll | | | Argument[0] | path-injection | manual | +| os | | false | Rename | | | Argument[0..1] | path-injection | manual | +| os | | false | StartProcess | | | Argument[0] | command-injection | manual | +| os | | false | Stat | | | Argument[0] | path-injection | manual | +| os | | false | Symlink | | | Argument[0..1] | path-injection | manual | +| os | | false | Truncate | | | Argument[0] | path-injection | manual | +| os | | false | WriteFile | | | Argument[0] | path-injection | manual | +| os/exec | | false | Command | | | Argument[0] | command-injection | manual | +| os/exec | | false | CommandContext | | | Argument[1] | command-injection | manual | +| regexp | | false | Compile | | | Argument[0] | regex-use[c] | manual | +| regexp | | false | CompilePOSIX | | | Argument[0] | regex-use[c] | manual | +| regexp | | false | Match | | | Argument[0] | regex-use[1] | manual | +| regexp | | false | MatchReader | | | Argument[0] | regex-use[1] | manual | +| regexp | | false | MatchString | | | Argument[0] | regex-use[1] | manual | +| regexp | | false | MustCompile | | | Argument[0] | regex-use[c] | manual | +| regexp | | false | MustCompilePOSIX | | | Argument[0] | regex-use[c] | manual | +| regexp | Regexp | true | Match | | | Argument[receiver] | regex-use[0] | manual | +| regexp | Regexp | true | MatchReader | | | Argument[receiver] | regex-use[0] | manual | +| regexp | Regexp | true | MatchString | | | Argument[receiver] | regex-use[0] | manual | +| syscall | | false | CreateProcess | | | Argument[0] | command-injection | manual | +| syscall | | false | CreateProcessAsUser | | | Argument[1] | command-injection | manual | +| syscall | | false | Exec | | | Argument[0] | command-injection | manual | +| syscall | | false | ForkExec | | | Argument[0] | command-injection | manual | +| syscall | | false | StartProcess | | | Argument[0] | command-injection | manual | +sourceModels +| database/sql | Conn | true | QueryContext | | | ReturnValue[0] | database | manual | +| database/sql | Conn | true | QueryRowContext | | | ReturnValue | database | manual | +| database/sql | DB | true | Query | | | ReturnValue[0] | database | manual | +| database/sql | DB | true | QueryContext | | | ReturnValue[0] | database | manual | +| database/sql | DB | true | QueryRow | | | ReturnValue | database | manual | +| database/sql | DB | true | QueryRowContext | | | ReturnValue | database | manual | +| database/sql | Stmt | true | Query | | | ReturnValue[0] | database | manual | +| database/sql | Stmt | true | QueryContext | | | ReturnValue[0] | database | manual | +| database/sql | Stmt | true | QueryRow | | | ReturnValue | database | manual | +| database/sql | Stmt | true | QueryRowContext | | | ReturnValue | database | manual | +| database/sql | Tx | true | Query | | | ReturnValue[0] | database | manual | +| database/sql | Tx | true | QueryContext | | | ReturnValue[0] | database | manual | +| database/sql | Tx | true | QueryRow | | | ReturnValue | database | manual | +| database/sql | Tx | true | QueryRowContext | | | ReturnValue | database | manual | +| database/sql/driver | Queryer | true | Query | | | ReturnValue[0] | database | manual | +| database/sql/driver | QueryerContext | true | QueryContext | | | ReturnValue[0] | database | manual | +| database/sql/driver | Stmt | true | Query | | | ReturnValue[0] | database | manual | +| database/sql/driver | StmtQueryContext | true | QueryContext | | | ReturnValue[0] | database | manual | +| github.com/caarlos0/env | | false | Parse | | | Argument[0] | environment | manual | +| github.com/caarlos0/env | | false | ParseAs | | | ReturnValue[0] | environment | manual | +| github.com/caarlos0/env | | false | ParseAsWithOptions | | | ReturnValue[0] | environment | manual | +| github.com/caarlos0/env | | false | ParseWithFuncs | | | Argument[0] | environment | manual | +| github.com/caarlos0/env | | false | ParseWithOptions | | | Argument[0] | environment | manual | +| github.com/elazarl/goproxy | ProxyCtx | true | Charset | | | ReturnValue | remote | manual | +| github.com/elazarl/goproxy | ProxyCtx | true | UserData | | | | remote | manual | +| github.com/emicklei/go-restful | Request | true | BodyParameter | | | ReturnValue[0] | remote | manual | +| github.com/emicklei/go-restful | Request | true | HeaderParameter | | | ReturnValue | remote | manual | +| github.com/emicklei/go-restful | Request | true | PathParameter | | | ReturnValue | remote | manual | +| github.com/emicklei/go-restful | Request | true | PathParameters | | | ReturnValue | remote | manual | +| github.com/emicklei/go-restful | Request | true | QueryParameter | | | ReturnValue | remote | manual | +| github.com/emicklei/go-restful | Request | true | QueryParameters | | | ReturnValue | remote | manual | +| github.com/emicklei/go-restful | Request | true | ReadEntity | | | Argument[0] | remote | manual | +| github.com/gin-gonic/gin | Context | true | Accepted | | | | remote | manual | +| github.com/gin-gonic/gin | Context | true | Bind | | | Argument[0] | remote | manual | +| github.com/gin-gonic/gin | Context | true | BindHeader | | | Argument[0] | remote | manual | +| github.com/gin-gonic/gin | Context | true | BindJSON | | | Argument[0] | remote | manual | +| github.com/gin-gonic/gin | Context | true | BindQuery | | | Argument[0] | remote | manual | +| github.com/gin-gonic/gin | Context | true | BindUri | | | Argument[0] | remote | manual | +| github.com/gin-gonic/gin | Context | true | BindWith | | | Argument[0] | remote | manual | +| github.com/gin-gonic/gin | Context | true | BindXML | | | Argument[0] | remote | manual | +| github.com/gin-gonic/gin | Context | true | BindYAML | | | Argument[0] | remote | manual | +| github.com/gin-gonic/gin | Context | true | ClientIP | | | ReturnValue | remote | manual | +| github.com/gin-gonic/gin | Context | true | ContentType | | | ReturnValue | remote | manual | +| github.com/gin-gonic/gin | Context | true | Cookie | | | ReturnValue[0] | remote | manual | +| github.com/gin-gonic/gin | Context | true | DefaultPostForm | | | ReturnValue | remote | manual | +| github.com/gin-gonic/gin | Context | true | DefaultQuery | | | ReturnValue | remote | manual | +| github.com/gin-gonic/gin | Context | true | FullPath | | | ReturnValue | remote | manual | +| github.com/gin-gonic/gin | Context | true | GetHeader | | | ReturnValue | remote | manual | +| github.com/gin-gonic/gin | Context | true | GetPostForm | | | ReturnValue[0] | remote | manual | +| github.com/gin-gonic/gin | Context | true | GetPostFormArray | | | ReturnValue[0] | remote | manual | +| github.com/gin-gonic/gin | Context | true | GetPostFormMap | | | ReturnValue[0] | remote | manual | +| github.com/gin-gonic/gin | Context | true | GetQuery | | | ReturnValue[0] | remote | manual | +| github.com/gin-gonic/gin | Context | true | GetQueryArray | | | ReturnValue[0] | remote | manual | +| github.com/gin-gonic/gin | Context | true | GetQueryMap | | | ReturnValue[0] | remote | manual | +| github.com/gin-gonic/gin | Context | true | GetRawData | | | ReturnValue[0] | remote | manual | +| github.com/gin-gonic/gin | Context | true | GetString | | | ReturnValue | remote | manual | +| github.com/gin-gonic/gin | Context | true | GetStringMap | | | ReturnValue | remote | manual | +| github.com/gin-gonic/gin | Context | true | GetStringMapString | | | ReturnValue | remote | manual | +| github.com/gin-gonic/gin | Context | true | GetStringMapStringSlice | | | ReturnValue | remote | manual | +| github.com/gin-gonic/gin | Context | true | GetStringSlice | | | ReturnValue | remote | manual | +| github.com/gin-gonic/gin | Context | true | MustBindWith | | | Argument[0] | remote | manual | +| github.com/gin-gonic/gin | Context | true | Param | | | ReturnValue | remote | manual | +| github.com/gin-gonic/gin | Context | true | Params | | | | remote | manual | +| github.com/gin-gonic/gin | Context | true | PostForm | | | ReturnValue | remote | manual | +| github.com/gin-gonic/gin | Context | true | PostFormArray | | | ReturnValue | remote | manual | +| github.com/gin-gonic/gin | Context | true | PostFormMap | | | ReturnValue | remote | manual | +| github.com/gin-gonic/gin | Context | true | Query | | | ReturnValue | remote | manual | +| github.com/gin-gonic/gin | Context | true | QueryArray | | | ReturnValue | remote | manual | +| github.com/gin-gonic/gin | Context | true | QueryMap | | | ReturnValue | remote | manual | +| github.com/gin-gonic/gin | Context | true | ShouldBind | | | Argument[0] | remote | manual | +| github.com/gin-gonic/gin | Context | true | ShouldBindBodyWith | | | Argument[0] | remote | manual | +| github.com/gin-gonic/gin | Context | true | ShouldBindHeader | | | Argument[0] | remote | manual | +| github.com/gin-gonic/gin | Context | true | ShouldBindJSON | | | Argument[0] | remote | manual | +| github.com/gin-gonic/gin | Context | true | ShouldBindQuery | | | Argument[0] | remote | manual | +| github.com/gin-gonic/gin | Context | true | ShouldBindUri | | | Argument[0] | remote | manual | +| github.com/gin-gonic/gin | Context | true | ShouldBindWith | | | Argument[0] | remote | manual | +| github.com/gin-gonic/gin | Context | true | ShouldBindXML | | | Argument[0] | remote | manual | +| github.com/gin-gonic/gin | Context | true | ShouldBindYAML | | | Argument[0] | remote | manual | +| github.com/go-chi/chi | | false | URLParam | | | ReturnValue | remote | manual | +| github.com/go-chi/chi | | false | URLParamFromCtx | | | ReturnValue | remote | manual | +| github.com/go-chi/chi | Context | true | URLParam | | | ReturnValue | remote | manual | +| github.com/gobuffalo/envy | | false | Environ | | | ReturnValue | environment | manual | +| github.com/gobuffalo/envy | | false | Get | | | ReturnValue | environment | manual | +| github.com/gobuffalo/envy | | false | GoBin | | | ReturnValue | environment | manual | +| github.com/gobuffalo/envy | | false | GoPath | | | ReturnValue | environment | manual | +| github.com/gobuffalo/envy | | false | GoPaths | | | ReturnValue | environment | manual | +| github.com/gobuffalo/envy | | false | Map | | | ReturnValue | environment | manual | +| github.com/gobuffalo/envy | | false | MustGet | | | ReturnValue[0] | environment | manual | +| github.com/gobwas/ws | | false | ReadFrame | | | ReturnValue[0] | remote | manual | +| github.com/gobwas/ws | | false | ReadHeader | | | ReturnValue[0] | remote | manual | +| github.com/gogf/gf/database/gdb | Core | true | DoGetAll | | | ReturnValue[0] | database | manual | +| github.com/gogf/gf/database/gdb | Core | true | DoQuery | | | ReturnValue[0] | database | manual | +| github.com/gogf/gf/database/gdb | Core | true | GetAll | | | ReturnValue[0] | database | manual | +| github.com/gogf/gf/database/gdb | Core | true | GetArray | | | ReturnValue[0] | database | manual | +| github.com/gogf/gf/database/gdb | Core | true | GetOne | | | ReturnValue[0] | database | manual | +| github.com/gogf/gf/database/gdb | Core | true | GetScan | | | Argument[0] | database | manual | +| github.com/gogf/gf/database/gdb | Core | true | GetStruct | | | Argument[0] | database | manual | +| github.com/gogf/gf/database/gdb | Core | true | GetStructs | | | Argument[0] | database | manual | +| github.com/gogf/gf/database/gdb | Core | true | GetValue | | | ReturnValue[0] | database | manual | +| github.com/gogf/gf/database/gdb | Core | true | Query | | | ReturnValue[0] | database | manual | +| github.com/gogf/gf/database/gdb | DB | true | DoGetAll | | | ReturnValue[0] | database | manual | +| github.com/gogf/gf/database/gdb | DB | true | DoQuery | | | ReturnValue[0] | database | manual | +| github.com/gogf/gf/database/gdb | DB | true | GetAll | | | ReturnValue[0] | database | manual | +| github.com/gogf/gf/database/gdb | DB | true | GetArray | | | ReturnValue[0] | database | manual | +| github.com/gogf/gf/database/gdb | DB | true | GetOne | | | ReturnValue[0] | database | manual | +| github.com/gogf/gf/database/gdb | DB | true | GetScan | | | Argument[0] | database | manual | +| github.com/gogf/gf/database/gdb | DB | true | GetValue | | | ReturnValue[0] | database | manual | +| github.com/gogf/gf/database/gdb | DB | true | Query | | | ReturnValue[0] | database | manual | +| github.com/gogf/gf/database/gdb | Model | true | All | | | ReturnValue[0] | database | manual | +| github.com/gogf/gf/database/gdb | Model | true | Array | | | ReturnValue[0] | database | manual | +| github.com/gogf/gf/database/gdb | Model | true | FindAll | | | ReturnValue[0] | database | manual | +| github.com/gogf/gf/database/gdb | Model | true | FindArray | | | ReturnValue[0] | database | manual | +| github.com/gogf/gf/database/gdb | Model | true | FindOne | | | ReturnValue[0] | database | manual | +| github.com/gogf/gf/database/gdb | Model | true | FindScan | | | Argument[0] | database | manual | +| github.com/gogf/gf/database/gdb | Model | true | FindValue | | | ReturnValue[0] | database | manual | +| github.com/gogf/gf/database/gdb | Model | true | One | | | ReturnValue[0] | database | manual | +| github.com/gogf/gf/database/gdb | Model | true | Scan | | | Argument[0] | database | manual | +| github.com/gogf/gf/database/gdb | Model | true | ScanList | | | Argument[0] | database | manual | +| github.com/gogf/gf/database/gdb | Model | true | Select | | | ReturnValue[0] | database | manual | +| github.com/gogf/gf/database/gdb | Model | true | Struct | | | Argument[0] | database | manual | +| github.com/gogf/gf/database/gdb | Model | true | Structs | | | Argument[0] | database | manual | +| github.com/gogf/gf/database/gdb | Model | true | Value | | | ReturnValue[0] | database | manual | +| github.com/gogf/gf/database/gdb | TX | true | GetAll | | | ReturnValue[0] | database | manual | +| github.com/gogf/gf/database/gdb | TX | true | GetOne | | | ReturnValue[0] | database | manual | +| github.com/gogf/gf/database/gdb | TX | true | GetScan | | | Argument[0] | database | manual | +| github.com/gogf/gf/database/gdb | TX | true | GetStruct | | | Argument[0] | database | manual | +| github.com/gogf/gf/database/gdb | TX | true | GetStructs | | | Argument[0] | database | manual | +| github.com/gogf/gf/database/gdb | TX | true | GetValue | | | ReturnValue[0] | database | manual | +| github.com/gogf/gf/database/gdb | TX | true | Query | | | ReturnValue[0] | database | manual | +| github.com/gorilla/mux | | false | Vars | | | ReturnValue | remote | manual | +| github.com/gorilla/websocket | | false | ReadJSON | | | Argument[1] | remote | manual | +| github.com/gorilla/websocket | Conn | true | ReadJSON | | | Argument[0] | remote | manual | +| github.com/gorilla/websocket | Conn | true | ReadMessage | | | ReturnValue[1] | remote | manual | +| github.com/hashicorp/go-envparse | | false | Parse | | | ReturnValue | environment | manual | +| github.com/jmoiron/sqlx | | true | Get | | | Argument[1] | database | manual | +| github.com/jmoiron/sqlx | | true | GetContext | | | Argument[2] | database | manual | +| github.com/jmoiron/sqlx | | true | NamedQuery | | | ReturnValue[0] | database | manual | +| github.com/jmoiron/sqlx | | true | NamedQueryContext | | | ReturnValue[0] | database | manual | +| github.com/jmoiron/sqlx | | true | Select | | | Argument[1] | database | manual | +| github.com/jmoiron/sqlx | | true | SelectContext | | | Argument[2] | database | manual | +| github.com/jmoiron/sqlx | Conn | true | GetContext | | | Argument[1] | database | manual | +| github.com/jmoiron/sqlx | Conn | true | QueryRowxContext | | | ReturnValue | database | manual | +| github.com/jmoiron/sqlx | Conn | true | QueryxContext | | | ReturnValue[0] | database | manual | +| github.com/jmoiron/sqlx | Conn | true | SelectContext | | | Argument[1] | database | manual | +| github.com/jmoiron/sqlx | DB | true | Get | | | Argument[0] | database | manual | +| github.com/jmoiron/sqlx | DB | true | GetContext | | | Argument[1] | database | manual | +| github.com/jmoiron/sqlx | DB | true | NamedQuery | | | ReturnValue[0] | database | manual | +| github.com/jmoiron/sqlx | DB | true | NamedQueryContext | | | ReturnValue[0] | database | manual | +| github.com/jmoiron/sqlx | DB | true | QueryRowx | | | ReturnValue[0] | database | manual | +| github.com/jmoiron/sqlx | DB | true | QueryRowxContext | | | ReturnValue[0] | database | manual | +| github.com/jmoiron/sqlx | DB | true | Queryx | | | ReturnValue[0] | database | manual | +| github.com/jmoiron/sqlx | DB | true | QueryxContext | | | ReturnValue[0] | database | manual | +| github.com/jmoiron/sqlx | DB | true | Select | | | Argument[0] | database | manual | +| github.com/jmoiron/sqlx | DB | true | SelectContext | | | Argument[1] | database | manual | +| github.com/jmoiron/sqlx | NamedStmt | true | Get | | | Argument[0] | database | manual | +| github.com/jmoiron/sqlx | NamedStmt | true | GetContext | | | Argument[1] | database | manual | +| github.com/jmoiron/sqlx | NamedStmt | true | Query | | | ReturnValue[0] | database | manual | +| github.com/jmoiron/sqlx | NamedStmt | true | QueryContext | | | ReturnValue[0] | database | manual | +| github.com/jmoiron/sqlx | NamedStmt | true | QueryRow | | | ReturnValue[0] | database | manual | +| github.com/jmoiron/sqlx | NamedStmt | true | QueryRowContext | | | ReturnValue[0] | database | manual | +| github.com/jmoiron/sqlx | NamedStmt | true | QueryRowx | | | ReturnValue[0] | database | manual | +| github.com/jmoiron/sqlx | NamedStmt | true | QueryRowxContext | | | ReturnValue[0] | database | manual | +| github.com/jmoiron/sqlx | NamedStmt | true | Queryx | | | ReturnValue[0] | database | manual | +| github.com/jmoiron/sqlx | NamedStmt | true | QueryxContext | | | ReturnValue[0] | database | manual | +| github.com/jmoiron/sqlx | NamedStmt | true | Select | | | Argument[0] | database | manual | +| github.com/jmoiron/sqlx | NamedStmt | true | SelectContext | | | Argument[1] | database | manual | +| github.com/jmoiron/sqlx | Stmt | true | Get | | | Argument[0] | database | manual | +| github.com/jmoiron/sqlx | Stmt | true | GetContext | | | Argument[1] | database | manual | +| github.com/jmoiron/sqlx | Stmt | true | QueryRowx | | | ReturnValue[0] | database | manual | +| github.com/jmoiron/sqlx | Stmt | true | QueryRowxContext | | | ReturnValue[0] | database | manual | +| github.com/jmoiron/sqlx | Stmt | true | Queryx | | | ReturnValue[0] | database | manual | +| github.com/jmoiron/sqlx | Stmt | true | QueryxContext | | | ReturnValue[0] | database | manual | +| github.com/jmoiron/sqlx | Stmt | true | Select | | | Argument[0] | database | manual | +| github.com/jmoiron/sqlx | Stmt | true | SelectContext | | | Argument[1] | database | manual | +| github.com/jmoiron/sqlx | Tx | true | Get | | | Argument[0] | database | manual | +| github.com/jmoiron/sqlx | Tx | true | GetContext | | | Argument[1] | database | manual | +| github.com/jmoiron/sqlx | Tx | true | NamedQuery | | | ReturnValue[0] | database | manual | +| github.com/jmoiron/sqlx | Tx | true | QueryRowx | | | ReturnValue[0] | database | manual | +| github.com/jmoiron/sqlx | Tx | true | QueryRowxContext | | | ReturnValue[0] | database | manual | +| github.com/jmoiron/sqlx | Tx | true | Queryx | | | ReturnValue[0] | database | manual | +| github.com/jmoiron/sqlx | Tx | true | QueryxContext | | | ReturnValue[0] | database | manual | +| github.com/jmoiron/sqlx | Tx | true | Select | | | Argument[0] | database | manual | +| github.com/jmoiron/sqlx | Tx | true | SelectContext | | | Argument[1] | database | manual | +| github.com/joho/godotenv | | false | Parse | | | ReturnValue | environment | manual | +| github.com/joho/godotenv | | false | Read | | | ReturnValue | environment | manual | +| github.com/joho/godotenv | | false | Unmarshal | | | ReturnValue | environment | manual | +| github.com/joho/godotenv | | false | UnmarshalBytes | | | ReturnValue | environment | manual | +| github.com/kelseyhightower/envconfig | | false | CheckDisallowed | | | Argument[1] | environment | manual | +| github.com/kelseyhightower/envconfig | | false | MustProcess | | | Argument[1] | environment | manual | +| github.com/kelseyhightower/envconfig | | false | Process | | | Argument[1] | environment | manual | +| github.com/kelseyhightower/envconfig | | false | Usage | | | Argument[1] | environment | manual | +| github.com/kelseyhightower/envconfig | | false | Usagef | | | Argument[1] | environment | manual | +| github.com/kelseyhightower/envconfig | | false | Usaget | | | Argument[1] | environment | manual | +| github.com/labstack/echo | Context | true | Bind | | | Argument[0] | remote | manual | +| github.com/labstack/echo | Context | true | Cookie | | | ReturnValue[0] | remote | manual | +| github.com/labstack/echo | Context | true | Cookies | | | ReturnValue[0] | remote | manual | +| github.com/labstack/echo | Context | true | FormFile | | | ReturnValue[0] | remote | manual | +| github.com/labstack/echo | Context | true | FormParams | | | ReturnValue[0] | remote | manual | +| github.com/labstack/echo | Context | true | FormValue | | | ReturnValue[0] | remote | manual | +| github.com/labstack/echo | Context | true | MultipartForm | | | ReturnValue[0] | remote | manual | +| github.com/labstack/echo | Context | true | Param | | | ReturnValue[0] | remote | manual | +| github.com/labstack/echo | Context | true | ParamValues | | | ReturnValue[0] | remote | manual | +| github.com/labstack/echo | Context | true | QueryParam | | | ReturnValue[0] | remote | manual | +| github.com/labstack/echo | Context | true | QueryParams | | | ReturnValue[0] | remote | manual | +| github.com/labstack/echo | Context | true | QueryString | | | ReturnValue[0] | remote | manual | +| github.com/uptrace/bun | DB | true | Query | | | ReturnValue[0] | database | manual | +| github.com/uptrace/bun | DB | true | QueryRow | | | ReturnValue | database | manual | +| github.com/uptrace/bun | IDB | true | QueryContext | | | ReturnValue[0] | database | manual | +| github.com/uptrace/bun | IDB | true | QueryRowContext | | | ReturnValue | database | manual | +| github.com/uptrace/bun | SelectQuery | true | Model | | | Argument[0] | database | manual | +| github.com/uptrace/bun | SelectQuery | true | Rows | | | ReturnValue[0] | database | manual | +| github.com/uptrace/bun | Tx | true | Query | | | ReturnValue[0] | database | manual | +| github.com/uptrace/bun | Tx | true | QueryRow | | | ReturnValue | database | manual | +| github.com/valyala/fasthttp | Args | true | Peek | | | ReturnValue[0] | remote | manual | +| github.com/valyala/fasthttp | Args | true | PeekBytes | | | ReturnValue[0] | remote | manual | +| github.com/valyala/fasthttp | Args | true | PeekMulti | | | ReturnValue[0] | remote | manual | +| github.com/valyala/fasthttp | Args | true | PeekMultiBytes | | | ReturnValue[0] | remote | manual | +| github.com/valyala/fasthttp | Args | true | QueryString | | | ReturnValue[0] | remote | manual | +| github.com/valyala/fasthttp | Args | true | String | | | ReturnValue[0] | remote | manual | +| github.com/valyala/fasthttp | Request | true | Body | | | ReturnValue[0] | remote | manual | +| github.com/valyala/fasthttp | Request | true | BodyGunzip | | | ReturnValue[0] | remote | manual | +| github.com/valyala/fasthttp | Request | true | BodyInflate | | | ReturnValue[0] | remote | manual | +| github.com/valyala/fasthttp | Request | true | BodyStream | | | ReturnValue[0] | remote | manual | +| github.com/valyala/fasthttp | Request | true | BodyUnbrotli | | | ReturnValue[0] | remote | manual | +| github.com/valyala/fasthttp | Request | true | BodyUncompressed | | | ReturnValue[0] | remote | manual | +| github.com/valyala/fasthttp | Request | true | ContinueReadBody | | | Argument[0] | remote | manual | +| github.com/valyala/fasthttp | Request | true | ContinueReadBodyStream | | | Argument[0] | remote | manual | +| github.com/valyala/fasthttp | Request | true | Host | | | ReturnValue[0] | remote | manual | +| github.com/valyala/fasthttp | Request | true | ReadBody | | | Argument[0] | remote | manual | +| github.com/valyala/fasthttp | Request | true | ReadLimitBody | | | Argument[0] | remote | manual | +| github.com/valyala/fasthttp | Request | true | RequestURI | | | ReturnValue[0] | remote | manual | +| github.com/valyala/fasthttp | RequestCtx | true | Host | | | ReturnValue[0] | remote | manual | +| github.com/valyala/fasthttp | RequestCtx | true | Path | | | ReturnValue[0] | remote | manual | +| github.com/valyala/fasthttp | RequestCtx | true | PostBody | | | ReturnValue[0] | remote | manual | +| github.com/valyala/fasthttp | RequestCtx | true | Referer | | | ReturnValue[0] | remote | manual | +| github.com/valyala/fasthttp | RequestCtx | true | RequestBodyStream | | | ReturnValue[0] | remote | manual | +| github.com/valyala/fasthttp | RequestCtx | true | RequestURI | | | ReturnValue[0] | remote | manual | +| github.com/valyala/fasthttp | RequestCtx | true | String | | | ReturnValue[0] | remote | manual | +| github.com/valyala/fasthttp | RequestCtx | true | UserAgent | | | ReturnValue[0] | remote | manual | +| github.com/valyala/fasthttp | RequestHeader | true | ContentEncoding | | | ReturnValue[0] | remote | manual | +| github.com/valyala/fasthttp | RequestHeader | true | ContentType | | | ReturnValue[0] | remote | manual | +| github.com/valyala/fasthttp | RequestHeader | true | Cookie | | | ReturnValue[0] | remote | manual | +| github.com/valyala/fasthttp | RequestHeader | true | CookieBytes | | | ReturnValue[0] | remote | manual | +| github.com/valyala/fasthttp | RequestHeader | true | Header | | | ReturnValue[0] | remote | manual | +| github.com/valyala/fasthttp | RequestHeader | true | Host | | | ReturnValue[0] | remote | manual | +| github.com/valyala/fasthttp | RequestHeader | true | MultipartFormBoundary | | | ReturnValue[0] | remote | manual | +| github.com/valyala/fasthttp | RequestHeader | true | Peek | | | ReturnValue[0] | remote | manual | +| github.com/valyala/fasthttp | RequestHeader | true | PeekAll | | | ReturnValue[0] | remote | manual | +| github.com/valyala/fasthttp | RequestHeader | true | PeekBytes | | | ReturnValue[0] | remote | manual | +| github.com/valyala/fasthttp | RequestHeader | true | PeekKeys | | | ReturnValue[0] | remote | manual | +| github.com/valyala/fasthttp | RequestHeader | true | PeekTrailerKeys | | | ReturnValue[0] | remote | manual | +| github.com/valyala/fasthttp | RequestHeader | true | RawHeaders | | | ReturnValue[0] | remote | manual | +| github.com/valyala/fasthttp | RequestHeader | true | Referer | | | ReturnValue[0] | remote | manual | +| github.com/valyala/fasthttp | RequestHeader | true | RequestURI | | | ReturnValue[0] | remote | manual | +| github.com/valyala/fasthttp | RequestHeader | true | String | | | ReturnValue[0] | remote | manual | +| github.com/valyala/fasthttp | RequestHeader | true | TrailerHeader | | | ReturnValue[0] | remote | manual | +| github.com/valyala/fasthttp | RequestHeader | true | UserAgent | | | ReturnValue[0] | remote | manual | +| github.com/valyala/fasthttp | URI | true | FullURI | | | ReturnValue[0] | remote | manual | +| github.com/valyala/fasthttp | URI | true | LastPathSegment | | | ReturnValue[0] | remote | manual | +| github.com/valyala/fasthttp | URI | true | Path | | | ReturnValue[0] | remote | manual | +| github.com/valyala/fasthttp | URI | true | PathOriginal | | | ReturnValue[0] | remote | manual | +| github.com/valyala/fasthttp | URI | true | QueryString | | | ReturnValue[0] | remote | manual | +| github.com/valyala/fasthttp | URI | true | String | | | ReturnValue[0] | remote | manual | +| go.mongodb.org/mongo-driver/mongo | Client | true | Watch | | | ReturnValue[0] | database | manual | +| go.mongodb.org/mongo-driver/mongo | Collection | true | Aggregate | | | ReturnValue[0] | database | manual | +| go.mongodb.org/mongo-driver/mongo | Collection | true | Distinct | | | ReturnValue[0] | database | manual | +| go.mongodb.org/mongo-driver/mongo | Collection | true | Find | | | ReturnValue[0] | database | manual | +| go.mongodb.org/mongo-driver/mongo | Collection | true | FindOne | | | ReturnValue | database | manual | +| go.mongodb.org/mongo-driver/mongo | Collection | true | FindOneAndDelete | | | ReturnValue | database | manual | +| go.mongodb.org/mongo-driver/mongo | Collection | true | FindOneAndReplace | | | ReturnValue | database | manual | +| go.mongodb.org/mongo-driver/mongo | Collection | true | FindOneAndUpdate | | | ReturnValue | database | manual | +| go.mongodb.org/mongo-driver/mongo | Collection | true | Watch | | | ReturnValue[0] | database | manual | +| go.mongodb.org/mongo-driver/mongo | Database | true | Aggregate | | | ReturnValue[0] | database | manual | +| go.mongodb.org/mongo-driver/mongo | Database | true | Watch | | | ReturnValue[0] | database | manual | +| golang.org/x/net/websocket | Codec | true | Receive | | | Argument[1] | remote | manual | +| golang.org/x/net/websocket | Conn | true | Read | | | Argument[0] | remote | manual | +| gopkg.in/macaron | Context | true | AllParams | | | ReturnValue | remote | manual | +| gopkg.in/macaron | Context | true | GetCookie | | | ReturnValue | remote | manual | +| gopkg.in/macaron | Context | true | GetFile | | | ReturnValue[0] | remote | manual | +| gopkg.in/macaron | Context | true | GetSecureCookie | | | ReturnValue[0] | remote | manual | +| gopkg.in/macaron | Context | true | GetSuperSecureCookie | | | ReturnValue[0] | remote | manual | +| gopkg.in/macaron | Context | true | Params | | | ReturnValue | remote | manual | +| gopkg.in/macaron | Context | true | ParamsEscape | | | ReturnValue | remote | manual | +| gopkg.in/macaron | Context | true | Query | | | ReturnValue | remote | manual | +| gopkg.in/macaron | Context | true | QueryEscape | | | ReturnValue | remote | manual | +| gopkg.in/macaron | Context | true | QueryStrings | | | ReturnValue | remote | manual | +| gopkg.in/macaron | RequestBody | true | Bytes | | | ReturnValue[0] | remote | manual | +| gopkg.in/macaron | RequestBody | true | String | | | ReturnValue[0] | remote | manual | +| group:beego | Controller | true | GetFile | | | ReturnValue[0..1] | remote | manual | +| group:beego | Controller | true | GetFiles | | | ReturnValue[0] | remote | manual | +| group:beego | Controller | true | GetString | | | ReturnValue[0] | remote | manual | +| group:beego | Controller | true | GetStrings | | | ReturnValue[0] | remote | manual | +| group:beego | Controller | true | Input | | | ReturnValue[0] | remote | manual | +| group:beego | Controller | true | ParseForm | | | Argument[0] | remote | manual | +| group:beego-context | BeegoInput | true | Bind | | | Argument[0] | remote | manual | +| group:beego-context | BeegoInput | true | Cookie | | | ReturnValue[0] | remote | manual | +| group:beego-context | BeegoInput | true | Data | | | ReturnValue[0] | remote | manual | +| group:beego-context | BeegoInput | true | GetData | | | ReturnValue[0] | remote | manual | +| group:beego-context | BeegoInput | true | Header | | | ReturnValue[0] | remote | manual | +| group:beego-context | BeegoInput | true | Param | | | ReturnValue[0] | remote | manual | +| group:beego-context | BeegoInput | true | Params | | | ReturnValue[0] | remote | manual | +| group:beego-context | BeegoInput | true | Query | | | ReturnValue[0] | remote | manual | +| group:beego-context | BeegoInput | true | Refer | | | ReturnValue[0] | remote | manual | +| group:beego-context | BeegoInput | true | Referer | | | ReturnValue[0] | remote | manual | +| group:beego-context | BeegoInput | true | RequestBody | | | | remote | manual | +| group:beego-context | BeegoInput | true | URI | | | ReturnValue[0] | remote | manual | +| group:beego-context | BeegoInput | true | URL | | | ReturnValue[0] | remote | manual | +| group:beego-context | BeegoInput | true | UserAgent | | | ReturnValue[0] | remote | manual | +| group:beego-context | Context | true | GetCookie | | | ReturnValue | remote | manual | +| group:beego-orm | DB | true | Query | | | ReturnValue[0] | database | manual | +| group:beego-orm | DB | true | QueryContext | | | ReturnValue[0] | database | manual | +| group:beego-orm | DB | true | QueryRow | | | ReturnValue | database | manual | +| group:beego-orm | DB | true | QueryRowContext | | | ReturnValue | database | manual | +| group:beego-orm | DQL | true | Read | | | Argument[0] | database | manual | +| group:beego-orm | DQL | true | ReadForUpdate | | | Argument[0] | database | manual | +| group:beego-orm | DQL | true | ReadForUpdateWithCtx | | | Argument[1] | database | manual | +| group:beego-orm | DQL | true | ReadOrCreate | | | Argument[0] | database | manual | +| group:beego-orm | DQL | true | ReadOrCreateWithCtx | | | Argument[1] | database | manual | +| group:beego-orm | DQL | true | ReadWithCtx | | | Argument[1] | database | manual | +| group:beego-orm | Ormer | true | Read | | | Argument[0] | database | manual | +| group:beego-orm | Ormer | true | ReadForUpdate | | | Argument[0] | database | manual | +| group:beego-orm | Ormer | true | ReadOrCreate | | | Argument[0] | database | manual | +| group:coder/websocket | Conn | true | Read | | | ReturnValue[1] | remote | manual | +| group:coder/websocket | Conn | true | Reader | | | ReturnValue[1] | remote | manual | +| group:gocb1 | Cluster | true | ExecuteAnalyticsQuery | | | ReturnValue[0] | database | manual | +| group:gocb1 | Cluster | true | ExecuteN1qlQuery | | | ReturnValue[0] | database | manual | +| group:gocb1 | Cluster | true | ExecuteSearchQuery | | | ReturnValue[0] | database | manual | +| group:gocb2 | Cluster | true | AnalyticsQuery | | | ReturnValue[0] | database | manual | +| group:gocb2 | Cluster | true | Query | | | ReturnValue[0] | database | manual | +| group:gocb2 | Collection | true | Get | | | ReturnValue[0] | database | manual | +| group:gocb2 | Collection | true | GetAndLock | | | ReturnValue[0] | database | manual | +| group:gocb2 | Collection | true | GetAndTouch | | | ReturnValue[0] | database | manual | +| group:gocb2 | Collection | true | GetAnyReplica | | | ReturnValue[0] | database | manual | +| group:gocb2 | Collection | true | LookupIn | | | ReturnValue[0] | database | manual | +| group:gocb2 | Collection | true | LookupInAllReplicas | | | ReturnValue[0] | database | manual | +| group:gocb2 | Collection | true | LookupInAnyReplica | | | ReturnValue[0] | database | manual | +| group:gocb2 | Collection | true | Scan | | | ReturnValue[0] | database | manual | +| group:gocb2 | Scope | true | AnalyticsQuery | | | ReturnValue[0] | database | manual | +| group:gocb2 | Scope | true | Query | | | ReturnValue[0] | database | manual | +| group:gocb2 | TransactionAttemptContext | true | Get | | | ReturnValue[0] | database | manual | +| group:gocb2 | TransactionAttemptContext | true | GetReplicaFromPreferredServerGroup | | | ReturnValue[0] | database | manual | +| group:gocb2 | TransactionAttemptContext | true | Insert | | | ReturnValue[0] | database | manual | +| group:gocb2 | TransactionAttemptContext | true | Query | | | ReturnValue[0] | database | manual | +| group:gocb2 | TransactionAttemptContext | true | Replace | | | ReturnValue[0] | database | manual | +| group:gocb2 | ViewIndexManager | true | GetAllDesignDocuments | | | ReturnValue[0] | database | manual | +| group:gocb2 | ViewIndexManager | true | GetDesignDocument | | | ReturnValue[0] | database | manual | +| group:gorm | Association | true | Find | | | Argument[0] | database | manual | +| group:gorm | ConnPool | true | QueryContext | | | ReturnValue[0] | database | manual | +| group:gorm | ConnPool | true | QueryRowContext | | | ReturnValue | database | manual | +| group:gorm | DB | true | Find | | | Argument[0] | database | manual | +| group:gorm | DB | true | FindInBatches | | | Argument[0] | database | manual | +| group:gorm | DB | true | First | | | Argument[0] | database | manual | +| group:gorm | DB | true | FirstOrCreate | | | Argument[0] | database | manual | +| group:gorm | DB | true | FirstOrInit | | | Argument[0] | database | manual | +| group:gorm | DB | true | Last | | | Argument[0] | database | manual | +| group:gorm | DB | true | Model | | | Argument[0] | database | manual | +| group:gorm | DB | true | Pluck | | | Argument[1] | database | manual | +| group:gorm | DB | true | Row | | | ReturnValue | database | manual | +| group:gorm | DB | true | Rows | | | ReturnValue[0] | database | manual | +| group:gorm | DB | true | Scan | | | Argument[0] | database | manual | +| group:gorm | DB | true | Take | | | Argument[0] | database | manual | +| group:gorqlite | Connection | true | Query | | | ReturnValue[0] | database | manual | +| group:gorqlite | Connection | true | QueryContext | | | ReturnValue[0] | database | manual | +| group:gorqlite | Connection | true | QueryOne | | | ReturnValue[0] | database | manual | +| group:gorqlite | Connection | true | QueryOneContext | | | ReturnValue[0] | database | manual | +| group:gorqlite | Connection | true | QueryOneParameterized | | | ReturnValue[0] | database | manual | +| group:gorqlite | Connection | true | QueryOneParameterizedContext | | | ReturnValue[0] | database | manual | +| group:gorqlite | Connection | true | QueryParameterized | | | ReturnValue[0] | database | manual | +| group:gorqlite | Connection | true | QueryParameterizedContext | | | ReturnValue[0] | database | manual | +| group:revel | Controller | true | Params | | | | remote | manual | +| group:revel | Request | true | AcceptLanguages | | | | remote | manual | +| group:revel | Request | true | ContentType | | | | remote | manual | +| group:revel | Request | true | Cookie | | | ReturnValue[0] | remote | manual | +| group:revel | Request | true | Form | | | | remote | manual | +| group:revel | Request | true | FormValue | | | ReturnValue | remote | manual | +| group:revel | Request | true | GetBody | | | ReturnValue | remote | manual | +| group:revel | Request | true | GetForm | | | ReturnValue[0] | remote | manual | +| group:revel | Request | true | GetHttpHeader | | | ReturnValue | remote | manual | +| group:revel | Request | true | GetMultipartForm | | | ReturnValue[0] | remote | manual | +| group:revel | Request | true | GetQuery | | | ReturnValue | remote | manual | +| group:revel | Request | true | GetRequestURI | | | ReturnValue | remote | manual | +| group:revel | Request | true | Header | | | | remote | manual | +| group:revel | Request | true | Locale | | | | remote | manual | +| group:revel | Request | true | MultipartForm | | | | remote | manual | +| group:revel | Request | true | MultipartReader | | | ReturnValue[0] | remote | manual | +| group:revel | Request | true | PostFormValue | | | ReturnValue | remote | manual | +| group:revel | Request | true | Referer | | | ReturnValue | remote | manual | +| group:revel | Request | true | URL | | | | remote | manual | +| group:revel | Request | true | UserAgent | | | ReturnValue | remote | manual | +| group:revel | RouteMatch | true | Params | | | | remote | manual | +| group:revel | ServerWebSocket | true | MessageReceive | | | Argument[0] | remote | manual | +| group:revel | ServerWebSocket | true | MessageReceiveJSON | | | Argument[0] | remote | manual | +| group:squirrel | | true | QueryContextWith | | | ReturnValue[0] | database | manual | +| group:squirrel | | true | QueryRowContextWith | | | ReturnValue | database | manual | +| group:squirrel | | true | QueryRowWith | | | ReturnValue | database | manual | +| group:squirrel | | true | QueryWith | | | ReturnValue[0] | database | manual | +| group:squirrel | DeleteBuilder | true | Query | | | ReturnValue[0] | database | manual | +| group:squirrel | DeleteBuilder | true | QueryContext | | | ReturnValue[0] | database | manual | +| group:squirrel | DeleteBuilder | true | QueryRowContext | | | ReturnValue[0] | database | manual | +| group:squirrel | InsertBuilder | true | Query | | | ReturnValue[0] | database | manual | +| group:squirrel | InsertBuilder | true | QueryContext | | | ReturnValue[0] | database | manual | +| group:squirrel | InsertBuilder | true | QueryRow | | | ReturnValue[0] | database | manual | +| group:squirrel | InsertBuilder | true | QueryRowContext | | | ReturnValue[0] | database | manual | +| group:squirrel | QueryRower | true | QueryRow | | | ReturnValue[0] | database | manual | +| group:squirrel | QueryRowerContext | true | QueryRowContext | | | ReturnValue[0] | database | manual | +| group:squirrel | Queryer | true | Query | | | ReturnValue[0] | database | manual | +| group:squirrel | QueryerContext | true | QueryContext | | | ReturnValue[0] | database | manual | +| group:squirrel | SelectBuilder | true | Query | | | ReturnValue[0] | database | manual | +| group:squirrel | SelectBuilder | true | QueryContext | | | ReturnValue[0] | database | manual | +| group:squirrel | SelectBuilder | true | QueryRow | | | ReturnValue[0] | database | manual | +| group:squirrel | SelectBuilder | true | QueryRowContext | | | ReturnValue[0] | database | manual | +| group:squirrel | StdSql | true | Query | | | ReturnValue[0] | database | manual | +| group:squirrel | StdSql | true | QueryRow | | | ReturnValue | database | manual | +| group:squirrel | StdSqlCtx | true | QueryContext | | | ReturnValue[0] | database | manual | +| group:squirrel | StdSqlCtx | true | QueryRowContext | | | ReturnValue | database | manual | +| group:squirrel | UpdateBuilder | true | Query | | | ReturnValue[0] | database | manual | +| group:squirrel | UpdateBuilder | true | QueryContext | | | ReturnValue[0] | database | manual | +| group:squirrel | UpdateBuilder | true | QueryRow | | | ReturnValue[0] | database | manual | +| group:squirrel | UpdateBuilder | true | QueryRowContext | | | ReturnValue[0] | database | manual | +| io/fs | | false | ReadFile | | | ReturnValue[0] | file | manual | +| io/fs | FS | true | Open | | | ReturnValue[0] | file | manual | +| io/fs | ReadFileFS | true | ReadFile | | | ReturnValue[0] | file | manual | +| io/ioutil | | false | ReadFile | | | ReturnValue[0] | file | manual | +| net/http | Request | true | Body | | | | remote | manual | +| net/http | Request | true | Cookie | | | ReturnValue[0] | remote | manual | +| net/http | Request | true | Cookies | | | ReturnValue.ArrayElement | remote | manual | +| net/http | Request | true | Form | | | | remote | manual | +| net/http | Request | true | FormFile | | | ReturnValue[0..1] | remote | manual | +| net/http | Request | true | FormValue | | | ReturnValue | remote | manual | +| net/http | Request | true | GetBody | | | | remote | manual | +| net/http | Request | true | Header | | | | remote | manual | +| net/http | Request | true | MultipartForm | | | | remote | manual | +| net/http | Request | true | MultipartReader | | | ReturnValue[0] | remote | manual | +| net/http | Request | true | PostForm | | | | remote | manual | +| net/http | Request | true | PostFormValue | | | ReturnValue | remote | manual | +| net/http | Request | true | Referer | | | ReturnValue | remote | manual | +| net/http | Request | true | Trailer | | | | remote | manual | +| net/http | Request | true | URL | | | | remote | manual | +| net/http | Request | true | UserAgent | | | ReturnValue | remote | manual | +| os | | false | Args | | | | commandargs | manual | +| os | | false | Environ | | | ReturnValue | environment | manual | +| os | | false | ExpandEnv | | | ReturnValue | environment | manual | +| os | | false | Getenv | | | ReturnValue | environment | manual | +| os | | false | LookupEnv | | | ReturnValue[0] | environment | manual | +| os | | false | Open | | | ReturnValue[0] | file | manual | +| os | | false | OpenFile | | | ReturnValue[0] | file | manual | +| os | | false | ReadFile | | | ReturnValue[0] | file | manual | +| os | | false | Stdin | | | | stdin | manual | +| os | | false | UserCacheDir | | | ReturnValue[0] | environment | manual | +| os | | false | UserConfigDir | | | ReturnValue[0] | environment | manual | +| os | | false | UserHomeDir | | | ReturnValue[0] | environment | manual | +| syscall | | false | Environ | | | ReturnValue | environment | manual | +| syscall | | false | Getenv | | | ReturnValue[0] | environment | manual | +summaryModels +| | | false | append | | | Argument[0] | ReturnValue | taint | manual | +| | | false | append | | | Argument[0].ArrayElement | ReturnValue.ArrayElement | value | manual | +| | | false | append | | | Argument[1] | ReturnValue | taint | manual | +| | | false | append | | | Argument[1].ArrayElement | ReturnValue.ArrayElement | value | manual | +| | | false | copy | | | Argument[1] | Argument[0] | taint | manual | +| | | false | copy | | | Argument[1].ArrayElement | Argument[0].ArrayElement | value | manual | +| | | false | max | | | Argument[0..1000] | ReturnValue | value | manual | +| | | false | min | | | Argument[0..1000] | ReturnValue | value | manual | +| | | false | new | | | Argument[0] | ReturnValue.Dereference | value | manual | +| archive/tar | | false | FileInfoHeader | | | Argument[0] | ReturnValue[0] | taint | manual | +| archive/tar | | false | NewReader | | | Argument[0] | ReturnValue | taint | manual | +| archive/tar | Header | true | FileInfo | | | Argument[receiver] | ReturnValue | taint | manual | +| archive/tar | Reader | true | Next | | | Argument[receiver] | ReturnValue[0] | taint | manual | +| archive/tar | Writer | true | WriteHeader | | | Argument[0] | Argument[receiver] | taint | manual | +| archive/zip | | false | FileInfoHeader | | | Argument[0] | ReturnValue[0] | taint | manual | +| archive/zip | | false | NewReader | | | Argument[0] | ReturnValue[0] | taint | manual | +| archive/zip | | false | OpenReader | | | Argument[0] | ReturnValue[0] | taint | manual | +| archive/zip | File | true | Open | | | Argument[receiver] | ReturnValue[0] | taint | manual | +| archive/zip | File | true | OpenRaw | | | Argument[receiver] | ReturnValue[0] | taint | manual | +| archive/zip | Writer | true | Copy | | | Argument[0] | Argument[receiver] | taint | manual | +| bufio | | false | NewReadWriter | | | Argument[0] | ReturnValue | taint | manual | +| bufio | | false | NewReader | | | Argument[0] | ReturnValue | taint | manual | +| bufio | | false | NewReaderSize | | | Argument[0] | ReturnValue | taint | manual | +| bufio | | false | NewScanner | | | Argument[0] | ReturnValue | taint | manual | +| bufio | | false | ScanBytes | | | Argument[0] | ReturnValue[1] | taint | manual | +| bufio | | false | ScanLines | | | Argument[0] | ReturnValue[1] | taint | manual | +| bufio | | false | ScanRunes | | | Argument[0] | ReturnValue[1] | taint | manual | +| bufio | | false | ScanWords | | | Argument[0] | ReturnValue[1] | taint | manual | +| bufio | Reader | true | Peek | | | Argument[receiver] | ReturnValue[0] | taint | manual | +| bufio | Reader | true | ReadBytes | | | Argument[receiver] | ReturnValue[0] | taint | manual | +| bufio | Reader | true | ReadLine | | | Argument[receiver] | ReturnValue[0] | taint | manual | +| bufio | Reader | true | ReadSlice | | | Argument[receiver] | ReturnValue[0] | taint | manual | +| bufio | Reader | true | ReadString | | | Argument[receiver] | ReturnValue[0] | taint | manual | +| bufio | Reader | true | Reset | | | Argument[0] | Argument[receiver] | taint | manual | +| bufio | Scanner | true | Bytes | | | Argument[receiver] | ReturnValue | taint | manual | +| bufio | Scanner | true | Text | | | Argument[receiver] | ReturnValue | taint | manual | +| bufio | Writer | true | Reset | | | Argument[receiver] | Argument[0] | taint | manual | +| bytes | | false | Clone | | | Argument[0] | ReturnValue | taint | manual | +| bytes | | false | Cut | | | Argument[0] | ReturnValue[0..1] | taint | manual | +| bytes | | false | CutLast | | | Argument[0] | ReturnValue[0..1] | taint | manual | +| bytes | | false | CutPrefix | | | Argument[0] | ReturnValue[0] | taint | manual | +| bytes | | false | CutSuffix | | | Argument[0] | ReturnValue[0] | taint | manual | +| bytes | | false | Fields | | | Argument[0] | ReturnValue | taint | manual | +| bytes | | false | FieldsFunc | | | Argument[0] | ReturnValue | taint | manual | +| bytes | | false | Join | | | Argument[0..1] | ReturnValue | taint | manual | +| bytes | | false | Map | | | Argument[1] | ReturnValue | taint | manual | +| bytes | | false | NewBuffer | | | Argument[0] | ReturnValue | taint | manual | +| bytes | | false | NewBufferString | | | Argument[0] | ReturnValue | taint | manual | +| bytes | | false | NewReader | | | Argument[0] | ReturnValue | taint | manual | +| bytes | | false | Repeat | | | Argument[0] | ReturnValue | taint | manual | +| bytes | | false | Replace | | | Argument[0] | ReturnValue | taint | manual | +| bytes | | false | Replace | | | Argument[2] | ReturnValue | taint | manual | +| bytes | | false | ReplaceAll | | | Argument[0] | ReturnValue | taint | manual | +| bytes | | false | ReplaceAll | | | Argument[2] | ReturnValue | taint | manual | +| bytes | | false | Runes | | | Argument[0] | ReturnValue | taint | manual | +| bytes | | false | Split | | | Argument[0] | ReturnValue | taint | manual | +| bytes | | false | SplitAfter | | | Argument[0] | ReturnValue | taint | manual | +| bytes | | false | SplitAfterN | | | Argument[0] | ReturnValue | taint | manual | +| bytes | | false | SplitN | | | Argument[0] | ReturnValue | taint | manual | +| bytes | | false | Title | | | Argument[0] | ReturnValue | taint | manual | +| bytes | | false | ToLower | | | Argument[0] | ReturnValue | taint | manual | +| bytes | | false | ToLowerSpecial | | | Argument[1] | ReturnValue | taint | manual | +| bytes | | false | ToTitle | | | Argument[0] | ReturnValue | taint | manual | +| bytes | | false | ToTitleSpecial | | | Argument[1] | ReturnValue | taint | manual | +| bytes | | false | ToUpper | | | Argument[0] | ReturnValue | taint | manual | +| bytes | | false | ToUpperSpecial | | | Argument[1] | ReturnValue | taint | manual | +| bytes | | false | ToValidUTF8 | | | Argument[0..1] | ReturnValue | taint | manual | +| bytes | | false | Trim | | | Argument[0] | ReturnValue | taint | manual | +| bytes | | false | TrimFunc | | | Argument[0] | ReturnValue | taint | manual | +| bytes | | false | TrimLeft | | | Argument[0] | ReturnValue | taint | manual | +| bytes | | false | TrimLeftFunc | | | Argument[0] | ReturnValue | taint | manual | +| bytes | | false | TrimPrefix | | | Argument[0] | ReturnValue | taint | manual | +| bytes | | false | TrimRight | | | Argument[0] | ReturnValue | taint | manual | +| bytes | | false | TrimRightFunc | | | Argument[0] | ReturnValue | taint | manual | +| bytes | | false | TrimSpace | | | Argument[0] | ReturnValue | taint | manual | +| bytes | | false | TrimSuffix | | | Argument[0] | ReturnValue | taint | manual | +| bytes | Buffer | true | Bytes | | | Argument[receiver] | ReturnValue | taint | manual | +| bytes | Buffer | true | Next | | | Argument[receiver] | ReturnValue | taint | manual | +| bytes | Buffer | true | Peek | | | Argument[receiver] | ReturnValue[0] | taint | manual | +| bytes | Buffer | true | ReadBytes | | | Argument[receiver] | ReturnValue[0] | taint | manual | +| bytes | Buffer | true | ReadString | | | Argument[receiver] | ReturnValue[0] | taint | manual | +| bytes | Reader | true | Reset | | | Argument[0] | Argument[receiver] | taint | manual | +| compress/bzip2 | | false | NewReader | | | Argument[0] | ReturnValue | taint | manual | +| compress/flate | | false | NewReader | | | Argument[0] | ReturnValue | taint | manual | +| compress/flate | | false | NewReaderDict | | | Argument[0] | ReturnValue | taint | manual | +| compress/flate | Resetter | true | Reset | | | Argument[0] | Argument[receiver] | taint | manual | +| compress/flate | Writer | true | Reset | | | Argument[receiver] | Argument[0] | taint | manual | +| compress/gzip | | false | NewReader | | | Argument[0] | ReturnValue[0] | taint | manual | +| compress/gzip | Reader | true | Reset | | | Argument[0] | Argument[receiver] | taint | manual | +| compress/gzip | Writer | true | Reset | | | Argument[receiver] | Argument[0] | taint | manual | +| compress/lzw | | false | NewReader | | | Argument[0] | ReturnValue | taint | manual | +| compress/zlib | | false | NewReader | | | Argument[0] | ReturnValue[0] | taint | manual | +| compress/zlib | | false | NewReaderDict | | | Argument[0] | ReturnValue[0] | taint | manual | +| compress/zlib | Resetter | true | Reset | | | Argument[0] | Argument[receiver] | taint | manual | +| compress/zlib | Writer | true | Reset | | | Argument[receiver] | Argument[0] | taint | manual | +| container/heap | | false | Pop | | | Argument[0] | ReturnValue | taint | manual | +| container/heap | | false | Push | | | Argument[1] | Argument[0] | taint | manual | +| container/heap | | false | Remove | | | Argument[0] | ReturnValue | taint | manual | +| container/heap | Interface | true | Pop | | | Argument[receiver] | ReturnValue | taint | manual | +| container/heap | Interface | true | Push | | | Argument[0] | Argument[receiver] | taint | manual | +| container/list | Element | true | Next | | | Argument[receiver] | ReturnValue | taint | manual | +| container/list | Element | true | Prev | | | Argument[receiver] | ReturnValue | taint | manual | +| container/list | List | true | Back | | | Argument[receiver] | ReturnValue | taint | manual | +| container/list | List | true | Front | | | Argument[receiver] | ReturnValue | taint | manual | +| container/list | List | true | Init | | | Argument[receiver] | ReturnValue | taint | manual | +| container/list | List | true | InsertAfter | | | Argument[0] | Argument[receiver] | taint | manual | +| container/list | List | true | InsertAfter | | | Argument[0] | ReturnValue | taint | manual | +| container/list | List | true | InsertBefore | | | Argument[0] | Argument[receiver] | taint | manual | +| container/list | List | true | InsertBefore | | | Argument[0] | ReturnValue | taint | manual | +| container/list | List | true | MoveAfter | | | Argument[0] | Argument[receiver] | taint | manual | +| container/list | List | true | MoveBefore | | | Argument[0] | Argument[receiver] | taint | manual | +| container/list | List | true | MoveToBack | | | Argument[0] | Argument[receiver] | taint | manual | +| container/list | List | true | MoveToFront | | | Argument[0] | Argument[receiver] | taint | manual | +| container/list | List | true | PushBack | | | Argument[0] | Argument[receiver] | taint | manual | +| container/list | List | true | PushBack | | | Argument[0] | ReturnValue | taint | manual | +| container/list | List | true | PushBackList | | | Argument[0] | Argument[receiver] | taint | manual | +| container/list | List | true | PushFront | | | Argument[0] | Argument[receiver] | taint | manual | +| container/list | List | true | PushFront | | | Argument[0] | ReturnValue | taint | manual | +| container/list | List | true | PushFrontList | | | Argument[0] | Argument[receiver] | taint | manual | +| container/list | List | true | Remove | | | Argument[0] | ReturnValue | taint | manual | +| container/ring | Ring | true | Link | | | Argument[0] | ReturnValue | taint | manual | +| container/ring | Ring | true | Move | | | Argument[receiver] | ReturnValue | taint | manual | +| container/ring | Ring | true | Next | | | Argument[receiver] | ReturnValue | taint | manual | +| container/ring | Ring | true | Prev | | | Argument[receiver] | ReturnValue | taint | manual | +| container/ring | Ring | true | Unlink | | | Argument[receiver] | ReturnValue | taint | manual | +| context | | false | WithCancel | | | Argument[0] | ReturnValue[0] | taint | manual | +| context | | false | WithDeadline | | | Argument[0] | ReturnValue[0] | taint | manual | +| context | | false | WithTimeout | | | Argument[0] | ReturnValue[0] | taint | manual | +| context | | false | WithValue | | | Argument[0..2] | ReturnValue | taint | manual | +| context | Context | true | Value | | | Argument[receiver] | ReturnValue | taint | manual | +| crypto | Decrypter | true | Decrypt | | | Argument[1] | ReturnValue[0] | taint | manual | +| crypto/cipher | AEAD | true | Open | | | Argument[2] | Argument[0] | taint | manual | +| crypto/cipher | AEAD | true | Open | | | Argument[2] | ReturnValue[0] | taint | manual | +| crypto/cipher | Block | true | Decrypt | | | Argument[1] | Argument[0] | taint | manual | +| crypto/rsa | | false | DecryptOAEP | | | Argument[3] | ReturnValue[0] | taint | manual | +| crypto/rsa | | false | DecryptPKCS1v15 | | | Argument[2] | ReturnValue[0] | taint | manual | +| crypto/tls | | false | Client | | | Argument[0] | ReturnValue | taint | manual | +| crypto/tls | | false | NewListener | | | Argument[0] | ReturnValue | taint | manual | +| crypto/tls | | false | Server | | | Argument[0] | ReturnValue | taint | manual | +| crypto/x509 | | false | DecryptPEMBlock | | | Argument[0] | ReturnValue[0] | taint | manual | +| database/sql | | false | ConvertAssign | | | Argument[2] | Argument[1] | taint | manual | +| database/sql | | false | Named | | | Argument[0..1] | ReturnValue | taint | manual | +| database/sql | Conn | true | PrepareContext | | | Argument[1] | ReturnValue[0] | taint | manual | +| database/sql | DB | true | Prepare | | | Argument[0] | ReturnValue[0] | taint | manual | +| database/sql | DB | true | PrepareContext | | | Argument[1] | ReturnValue[0] | taint | manual | +| database/sql | Scanner | true | Scan | | | Argument[0] | Argument[receiver] | taint | manual | +| database/sql | Tx | true | Prepare | | | Argument[0] | ReturnValue[0] | taint | manual | +| database/sql | Tx | true | PrepareContext | | | Argument[1] | ReturnValue[0] | taint | manual | +| database/sql/driver | Conn | true | Prepare | | | Argument[0] | ReturnValue[0] | taint | manual | +| database/sql/driver | ConnPrepareContext | true | PrepareContext | | | Argument[1] | ReturnValue[0] | taint | manual | +| database/sql/driver | Rows | true | Next | | | Argument[receiver] | Argument[0] | taint | manual | +| database/sql/driver | RowsColumnScanner | true | ScanColumn | | | Argument[receiver] | Argument[2] | taint | manual | +| database/sql/driver | ValueConverter | true | ConvertValue | | | Argument[0] | ReturnValue[0] | taint | manual | +| database/sql/driver | Valuer | true | Value | | | Argument[receiver] | ReturnValue[0] | taint | manual | +| encoding | BinaryAppender | true | AppendBinary | | | Argument[0] | ReturnValue[0] | taint | manual | +| encoding | BinaryAppender | true | AppendBinary | | | Argument[receiver] | ReturnValue[0] | taint | manual | +| encoding | BinaryMarshaler | true | MarshalBinary | | | Argument[receiver] | ReturnValue[0] | taint | manual | +| encoding | BinaryUnmarshaler | true | UnmarshalBinary | | | Argument[0] | Argument[receiver] | taint | manual | +| encoding | TextAppender | true | AppendText | | | Argument[0] | ReturnValue[0] | taint | manual | +| encoding | TextAppender | true | AppendText | | | Argument[receiver] | ReturnValue[0] | taint | manual | +| encoding | TextMarshaler | true | MarshalText | | | Argument[receiver] | ReturnValue[0] | taint | manual | +| encoding | TextUnmarshaler | true | UnmarshalText | | | Argument[0] | Argument[receiver] | taint | manual | +| encoding/ascii85 | | false | Decode | | | Argument[1] | Argument[0] | taint | manual | +| encoding/ascii85 | | false | NewDecoder | | | Argument[0] | ReturnValue | taint | manual | +| encoding/asn1 | | false | Marshal | | | Argument[0] | ReturnValue[0] | taint | manual | +| encoding/asn1 | | false | MarshalWithParams | | | Argument[0..1] | ReturnValue[0] | taint | manual | +| encoding/asn1 | | false | Unmarshal | | | Argument[0] | Argument[1] | taint | manual | +| encoding/asn1 | | false | Unmarshal | | | Argument[0] | ReturnValue[0] | taint | manual | +| encoding/asn1 | | false | UnmarshalWithParams | | | Argument[0] | Argument[1] | taint | manual | +| encoding/asn1 | | false | UnmarshalWithParams | | | Argument[0] | ReturnValue[0] | taint | manual | +| encoding/asn1 | | false | UnmarshalWithParams | | | Argument[2] | Argument[1] | taint | manual | +| encoding/asn1 | | false | UnmarshalWithParams | | | Argument[2] | ReturnValue[0] | taint | manual | +| encoding/base32 | | false | NewDecoder | | | Argument[1] | ReturnValue | taint | manual | +| encoding/base32 | Encoding | true | Decode | | | Argument[1] | Argument[0] | taint | manual | +| encoding/base32 | Encoding | true | DecodeString | | | Argument[0] | ReturnValue[0] | taint | manual | +| encoding/base64 | | false | NewDecoder | | | Argument[1] | ReturnValue | taint | manual | +| encoding/base64 | Encoding | true | Decode | | | Argument[1] | Argument[0] | taint | manual | +| encoding/base64 | Encoding | true | DecodeString | | | Argument[0] | ReturnValue[0] | taint | manual | +| encoding/binary | | false | Read | | | Argument[0] | Argument[2] | taint | manual | +| encoding/binary | | false | Write | | | Argument[2] | Argument[0] | taint | manual | +| encoding/csv | | false | NewReader | | | Argument[0] | ReturnValue | taint | manual | +| encoding/csv | Reader | true | Read | | | Argument[receiver] | ReturnValue[0] | taint | manual | +| encoding/csv | Reader | true | ReadAll | | | Argument[receiver] | ReturnValue[0] | taint | manual | +| encoding/csv | Writer | true | Write | | | Argument[0] | Argument[receiver] | taint | manual | +| encoding/csv | Writer | true | WriteAll | | | Argument[0] | Argument[receiver] | taint | manual | +| encoding/gob | | false | NewDecoder | | | Argument[0] | ReturnValue | taint | manual | +| encoding/gob | Decoder | true | Decode | | | Argument[receiver] | Argument[0] | taint | manual | +| encoding/gob | Decoder | true | DecodeValue | | | Argument[receiver] | Argument[0] | taint | manual | +| encoding/gob | Encoder | true | Encode | | | Argument[0] | Argument[receiver] | taint | manual | +| encoding/gob | Encoder | true | EncodeValue | | | Argument[0] | Argument[receiver] | taint | manual | +| encoding/gob | GobDecoder | true | GobDecode | | | Argument[0] | Argument[receiver] | taint | manual | +| encoding/gob | GobEncoder | true | GobEncode | | | Argument[receiver] | ReturnValue[0] | taint | manual | +| encoding/hex | | false | Decode | | | Argument[1] | Argument[0] | taint | manual | +| encoding/hex | | false | DecodeString | | | Argument[0] | ReturnValue[0] | taint | manual | +| encoding/hex | | false | NewDecoder | | | Argument[0] | ReturnValue | taint | manual | +| encoding/json | | false | Compact | | | Argument[1] | Argument[0] | taint | manual | +| encoding/json | | false | HTMLEscape | | | Argument[1] | Argument[0] | taint | manual | +| encoding/json | | false | Indent | | | Argument[1..3] | Argument[0] | taint | manual | +| encoding/json | | false | Marshal | | | Argument[0] | ReturnValue[0] | taint | manual | +| encoding/json | | false | MarshalIndent | | | Argument[0..2] | ReturnValue[0] | taint | manual | +| encoding/json | | false | NewDecoder | | | Argument[0] | ReturnValue | taint | manual | +| encoding/json | | false | Unmarshal | | | Argument[0] | Argument[1] | taint | manual | +| encoding/json | Decoder | true | Buffered | | | Argument[receiver] | ReturnValue | taint | manual | +| encoding/json | Decoder | true | Decode | | | Argument[receiver] | Argument[0] | taint | manual | +| encoding/json | Decoder | true | Token | | | Argument[receiver] | ReturnValue[0] | taint | manual | +| encoding/json | Encoder | true | Encode | | | Argument[0] | Argument[receiver] | taint | manual | +| encoding/json | Encoder | true | SetIndent | | | Argument[0..1] | Argument[receiver] | taint | manual | +| encoding/json | Marshaler | true | MarshalJSON | | | Argument[receiver] | ReturnValue[0] | taint | manual | +| encoding/json | Unmarshaler | true | UnmarshalJSON | | | Argument[0] | Argument[receiver] | taint | manual | +| encoding/json/jsontext | | false | AppendFloat | | | Argument[0..1] | ReturnValue | taint | manual | +| encoding/json/jsontext | | false | AppendFormat | | | Argument[0..1] | ReturnValue[0] | taint | manual | +| encoding/json/jsontext | | false | AppendQuote | | | Argument[0..1] | ReturnValue[0] | taint | manual | +| encoding/json/jsontext | | false | AppendUnquote | | | Argument[0..1] | ReturnValue[0] | taint | manual | +| encoding/json/jsontext | | false | Float | | | Argument[0] | ReturnValue | taint | manual | +| encoding/json/jsontext | | false | Float32 | | | Argument[0] | ReturnValue | taint | manual | +| encoding/json/jsontext | | false | Int | | | Argument[0] | ReturnValue | taint | manual | +| encoding/json/jsontext | | false | NewDecoder | | | Argument[0] | ReturnValue | taint | manual | +| encoding/json/jsontext | | false | String | | | Argument[0] | ReturnValue | taint | manual | +| encoding/json/jsontext | | false | Uint | | | Argument[0] | ReturnValue | taint | manual | +| encoding/json/jsontext | Decoder | true | ReadToken | | | Argument[receiver] | ReturnValue[0] | taint | manual | +| encoding/json/jsontext | Decoder | true | ReadValue | | | Argument[receiver] | ReturnValue[0] | taint | manual | +| encoding/json/jsontext | Decoder | true | Reset | | | Argument[0] | Argument[receiver] | taint | manual | +| encoding/json/jsontext | Decoder | true | UnreadBuffer | | | Argument[receiver] | ReturnValue | taint | manual | +| encoding/json/jsontext | Encoder | true | Reset | | | Argument[receiver] | Argument[0] | taint | manual | +| encoding/json/jsontext | Encoder | true | WriteToken | | | Argument[0] | Argument[receiver] | taint | manual | +| encoding/json/jsontext | Encoder | true | WriteValue | | | Argument[0] | Argument[receiver] | taint | manual | +| encoding/json/jsontext | Pointer | true | AppendToken | | | Argument[0] | ReturnValue | taint | manual | +| encoding/json/jsontext | Pointer | true | AppendToken | | | Argument[receiver] | ReturnValue | taint | manual | +| encoding/json/jsontext | Pointer | true | LastToken | | | Argument[receiver] | ReturnValue | taint | manual | +| encoding/json/jsontext | Pointer | true | Parent | | | Argument[receiver] | ReturnValue | taint | manual | +| encoding/json/jsontext | Token | true | Clone | | | Argument[receiver] | ReturnValue | taint | manual | +| encoding/json/jsontext | Token | true | Float | | | Argument[receiver] | ReturnValue[0] | taint | manual | +| encoding/json/jsontext | Token | true | Float32 | | | Argument[receiver] | ReturnValue[0] | taint | manual | +| encoding/json/jsontext | Token | true | Int | | | Argument[receiver] | ReturnValue[0] | taint | manual | +| encoding/json/jsontext | Token | true | String | | | Argument[receiver] | ReturnValue | taint | manual | +| encoding/json/jsontext | Token | true | Uint | | | Argument[receiver] | ReturnValue[0] | taint | manual | +| encoding/json/jsontext | Value | true | Clone | | | Argument[receiver] | ReturnValue | taint | manual | +| encoding/json/jsontext | Value | true | MarshalJSON | | | Argument[receiver] | ReturnValue[0] | taint | manual | +| encoding/json/jsontext | Value | true | String | | | Argument[receiver] | ReturnValue | taint | manual | +| encoding/json/jsontext | Value | true | UnmarshalJSON | | | Argument[0] | Argument[receiver] | taint | manual | +| encoding/pem | | false | Decode | | | Argument[0] | ReturnValue[0..1] | taint | manual | +| encoding/pem | | false | Encode | | | Argument[1] | Argument[0] | taint | manual | +| encoding/pem | | false | EncodeToMemory | | | Argument[0] | ReturnValue | taint | manual | +| encoding/xml | | false | CopyToken | | | Argument[0] | ReturnValue | taint | manual | +| encoding/xml | | false | Escape | | | Argument[1] | Argument[0] | taint | manual | +| encoding/xml | | false | EscapeText | | | Argument[1] | Argument[0] | taint | manual | +| encoding/xml | | false | Marshal | | | Argument[0] | ReturnValue[0] | taint | manual | +| encoding/xml | | false | MarshalIndent | | | Argument[0..2] | ReturnValue[0] | taint | manual | +| encoding/xml | | false | NewDecoder | | | Argument[0] | ReturnValue | taint | manual | +| encoding/xml | | false | NewTokenDecoder | | | Argument[0] | ReturnValue | taint | manual | +| encoding/xml | | false | Unmarshal | | | Argument[0] | Argument[1] | taint | manual | +| encoding/xml | CharData | true | Copy | | | Argument[receiver] | ReturnValue | taint | manual | +| encoding/xml | Comment | true | Copy | | | Argument[receiver] | ReturnValue | taint | manual | +| encoding/xml | Decoder | true | Decode | | | Argument[receiver] | Argument[0] | taint | manual | +| encoding/xml | Decoder | true | DecodeElement | | | Argument[receiver] | Argument[0] | taint | manual | +| encoding/xml | Decoder | true | RawToken | | | Argument[receiver] | ReturnValue[0] | taint | manual | +| encoding/xml | Directive | true | Copy | | | Argument[receiver] | ReturnValue | taint | manual | +| encoding/xml | Encoder | true | Encode | | | Argument[0] | Argument[receiver] | taint | manual | +| encoding/xml | Encoder | true | EncodeElement | | | Argument[0] | Argument[receiver] | taint | manual | +| encoding/xml | Encoder | true | EncodeToken | | | Argument[0] | Argument[receiver] | taint | manual | +| encoding/xml | Encoder | true | Indent | | | Argument[0..1] | Argument[receiver] | taint | manual | +| encoding/xml | Marshaler | true | MarshalXML | | | Argument[receiver] | Argument[0] | taint | manual | +| encoding/xml | ProcInst | true | Copy | | | Argument[receiver] | ReturnValue | taint | manual | +| encoding/xml | StartElement | true | Copy | | | Argument[receiver] | ReturnValue | taint | manual | +| encoding/xml | TokenReader | true | Token | | | Argument[receiver] | ReturnValue[0] | taint | manual | +| encoding/xml | Unmarshaler | true | UnmarshalXML | | | Argument[0] | Argument[receiver] | taint | manual | +| errors | | false | As | | | Argument[0] | Argument[1] | taint | manual | +| errors | | false | AsType | | | Argument[0] | ReturnValue[0] | taint | manual | +| errors | | false | New | | | Argument[0] | ReturnValue | taint | manual | +| errors | | false | Unwrap | | | Argument[0] | ReturnValue | taint | manual | +| expvar | Func | true | Value | | | Argument[receiver] | ReturnValue | taint | manual | +| expvar | Map | true | Get | | | Argument[receiver] | ReturnValue | taint | manual | +| expvar | Map | true | Set | | | Argument[0..1] | Argument[receiver] | taint | manual | +| expvar | String | true | Set | | | Argument[0] | Argument[receiver] | taint | manual | +| expvar | String | true | Value | | | Argument[receiver] | ReturnValue | taint | manual | +| expvar | Var | true | String | | | Argument[receiver] | ReturnValue | taint | manual | +| fmt | | false | Append | | | Argument[0] | ReturnValue | taint | manual | +| fmt | | false | Append | | | Argument[1].ArrayElement | ReturnValue | taint | manual | +| fmt | | false | Appendf | | | Argument[0] | ReturnValue | taint | manual | +| fmt | | false | Appendf | | | Argument[1] | ReturnValue | taint | manual | +| fmt | | false | Appendf | | | Argument[2].ArrayElement | ReturnValue | taint | manual | +| fmt | | false | Appendln | | | Argument[0] | ReturnValue | taint | manual | +| fmt | | false | Appendln | | | Argument[1].ArrayElement | ReturnValue | taint | manual | +| fmt | | false | Sprint | | | Argument[0].ArrayElement | ReturnValue | taint | manual | +| fmt | | false | Sprintf | | | Argument[0] | ReturnValue | taint | manual | +| fmt | | false | Sprintf | | | Argument[1].ArrayElement | ReturnValue | taint | manual | +| fmt | | false | Sprintln | | | Argument[0].ArrayElement | ReturnValue | taint | manual | +| fmt | GoStringer | true | GoString | | | Argument[receiver] | ReturnValue | taint | manual | +| fmt | ScanState | true | Read | | | Argument[receiver] | Argument[0] | taint | manual | +| fmt | ScanState | true | Token | | | Argument[receiver] | ReturnValue[0] | taint | manual | +| fmt | State | true | Write | | | Argument[0] | Argument[receiver] | taint | manual | +| fmt | Stringer | true | String | | | Argument[receiver] | ReturnValue | taint | manual | +| github.com/caarlos0/env | | false | Must | | | Argument[0] | ReturnValue | value | manual | +| github.com/caarlos0/env | | false | ToMap | | | Argument[0] | ReturnValue | taint | manual | +| github.com/dgrijalva/jwt-go | | false | Parse | | | Argument[0] | ReturnValue[0] | taint | manual | +| github.com/dgrijalva/jwt-go | | false | ParseECPrivateKeyFromPEM | | | Argument[0] | ReturnValue[0] | taint | manual | +| github.com/dgrijalva/jwt-go | | false | ParseECPublicKeyFromPEM | | | Argument[0] | ReturnValue[0] | taint | manual | +| github.com/dgrijalva/jwt-go | | false | ParseRSAPrivateKeyFromPEM | | | Argument[0] | ReturnValue[0] | taint | manual | +| github.com/dgrijalva/jwt-go | | false | ParseRSAPrivateKeyFromPEMWithPassword | | | Argument[0] | ReturnValue[0] | taint | manual | +| github.com/dgrijalva/jwt-go | | false | ParseRSAPublicKeyFromPEM | | | Argument[0] | ReturnValue[0] | taint | manual | +| github.com/dgrijalva/jwt-go | | false | ParseWithClaims | | | Argument[0] | ReturnValue[0] | taint | manual | +| github.com/dgrijalva/jwt-go | Parser | true | Parse | | | Argument[0] | ReturnValue[0] | taint | manual | +| github.com/dgrijalva/jwt-go | Parser | true | ParseWithClaims | | | Argument[0] | ReturnValue[0] | taint | manual | +| github.com/elazarl/goproxy | CertStorage | true | Fetch | | | Argument[1] | ReturnValue[0] | taint | manual | +| github.com/elazarl/goproxy | CertStorage | true | Fetch | | | Argument[receiver] | ReturnValue[0] | taint | manual | +| github.com/evanphx/json-patch | | false | CreateMergePatch | | | Argument[0..1] | ReturnValue[0] | taint | manual | +| github.com/evanphx/json-patch | | false | DecodePatch | | | Argument[0] | ReturnValue[0] | taint | manual | +| github.com/evanphx/json-patch | | false | MergeMergePatches | | | Argument[0..1] | ReturnValue[0] | taint | manual | +| github.com/evanphx/json-patch | | false | MergePatch | | | Argument[0..1] | ReturnValue[0] | taint | manual | +| github.com/evanphx/json-patch | Patch | true | Apply | | | Argument[0] | ReturnValue[0] | taint | manual | +| github.com/evanphx/json-patch | Patch | true | Apply | | | Argument[receiver] | ReturnValue[0] | taint | manual | +| github.com/evanphx/json-patch | Patch | true | ApplyIndent | | | Argument[0] | ReturnValue[0] | taint | manual | +| github.com/evanphx/json-patch | Patch | true | ApplyIndent | | | Argument[receiver] | ReturnValue[0] | taint | manual | +| github.com/evanphx/json-patch | Patch | true | ApplyIndentWithOptions | | | Argument[0] | ReturnValue[0] | taint | manual | +| github.com/evanphx/json-patch | Patch | true | ApplyIndentWithOptions | | | Argument[receiver] | ReturnValue[0] | taint | manual | +| github.com/evanphx/json-patch | Patch | true | ApplyWithOptions | | | Argument[0] | ReturnValue[0] | taint | manual | +| github.com/evanphx/json-patch | Patch | true | ApplyWithOptions | | | Argument[receiver] | ReturnValue[0] | taint | manual | +| github.com/gin-gonic/gin | Params | true | ByName | | | Argument[receiver] | ReturnValue | taint | manual | +| github.com/gin-gonic/gin | Params | true | Get | | | Argument[receiver] | ReturnValue[0] | taint | manual | +| github.com/go-pg/pg/orm | Formatter | true | Append | | | Argument[1] | Argument[0] | taint | manual | +| github.com/go-pg/pg/orm | Formatter | true | Append | | | Argument[1] | ReturnValue | taint | manual | +| github.com/go-pg/pg/orm | Formatter | true | AppendBytes | | | Argument[1] | Argument[0] | taint | manual | +| github.com/go-pg/pg/orm | Formatter | true | AppendBytes | | | Argument[1] | ReturnValue | taint | manual | +| github.com/go-pg/pg/orm | Formatter | true | FormatQuery | | | Argument[1] | Argument[0] | taint | manual | +| github.com/go-pg/pg/orm | Formatter | true | FormatQuery | | | Argument[1] | ReturnValue | taint | manual | +| github.com/gogf/gf/database/gdb | Record | true | GMap | | | Argument[receiver] | ReturnValue | taint | manual | +| github.com/gogf/gf/database/gdb | Record | true | Interface | | | Argument[receiver] | ReturnValue | taint | manual | +| github.com/gogf/gf/database/gdb | Record | true | Json | | | Argument[receiver] | ReturnValue | taint | manual | +| github.com/gogf/gf/database/gdb | Record | true | Map | | | Argument[receiver] | ReturnValue | taint | manual | +| github.com/gogf/gf/database/gdb | Record | true | Struct | | | Argument[receiver] | Argument[0] | taint | manual | +| github.com/gogf/gf/database/gdb | Record | true | Xml | | | Argument[receiver] | ReturnValue | taint | manual | +| github.com/gogf/gf/database/gdb | Result | true | Array | | | Argument[receiver] | ReturnValue.ArrayElement | taint | manual | +| github.com/gogf/gf/database/gdb | Result | true | Chunk | | | Argument[receiver] | ReturnValue.ArrayElement | taint | manual | +| github.com/gogf/gf/database/gdb | Result | true | Interface | | | Argument[receiver] | ReturnValue | taint | manual | +| github.com/gogf/gf/database/gdb | Result | true | Json | | | Argument[receiver] | ReturnValue | taint | manual | +| github.com/gogf/gf/database/gdb | Result | true | List | | | Argument[receiver] | ReturnValue | taint | manual | +| github.com/gogf/gf/database/gdb | Result | true | MapKeyInt | | | Argument[receiver] | ReturnValue | taint | manual | +| github.com/gogf/gf/database/gdb | Result | true | MapKeyStr | | | Argument[receiver] | ReturnValue | taint | manual | +| github.com/gogf/gf/database/gdb | Result | true | MapKeyUint | | | Argument[receiver] | ReturnValue | taint | manual | +| github.com/gogf/gf/database/gdb | Result | true | MapKeyValue | | | Argument[receiver] | ReturnValue | taint | manual | +| github.com/gogf/gf/database/gdb | Result | true | RecordKeyInt | | | Argument[receiver] | ReturnValue | taint | manual | +| github.com/gogf/gf/database/gdb | Result | true | RecordKeyStr | | | Argument[receiver] | ReturnValue | taint | manual | +| github.com/gogf/gf/database/gdb | Result | true | RecordKeyUint | | | Argument[receiver] | ReturnValue | taint | manual | +| github.com/gogf/gf/database/gdb | Result | true | ScanList | | | Argument[receiver] | Argument[0] | taint | manual | +| github.com/gogf/gf/database/gdb | Result | true | Structs | | | Argument[receiver] | Argument[0] | taint | manual | +| github.com/gogf/gf/database/gdb | Result | true | Xml | | | Argument[receiver] | ReturnValue | taint | manual | +| github.com/golang-jwt/jwt | | false | Parse | | | Argument[0] | ReturnValue[0] | taint | manual | +| github.com/golang-jwt/jwt | | false | ParseECPrivateKeyFromPEM | | | Argument[0] | ReturnValue[0] | taint | manual | +| github.com/golang-jwt/jwt | | false | ParseECPublicKeyFromPEM | | | Argument[0] | ReturnValue[0] | taint | manual | +| github.com/golang-jwt/jwt | | false | ParseEdPrivateKeyFromPEM | | | Argument[0] | ReturnValue[0] | taint | manual | +| github.com/golang-jwt/jwt | | false | ParseEdPublicKeyFromPEM | | | Argument[0] | ReturnValue[0] | taint | manual | +| github.com/golang-jwt/jwt | | false | ParseRSAPrivateKeyFromPEM | | | Argument[0] | ReturnValue[0] | taint | manual | +| github.com/golang-jwt/jwt | | false | ParseRSAPublicKeyFromPEM | | | Argument[0] | ReturnValue[0] | taint | manual | +| github.com/golang-jwt/jwt | | false | ParseWithClaims | | | Argument[0] | ReturnValue[0] | taint | manual | +| github.com/golang-jwt/jwt | | false | RegisterSigningMethod | | | Argument[0] | ReturnValue[0] | taint | manual | +| github.com/golang-jwt/jwt | Parser | true | Parse | | | Argument[0] | ReturnValue[0] | taint | manual | +| github.com/golang-jwt/jwt | Parser | true | ParseWithClaims | | | Argument[0] | ReturnValue[0] | taint | manual | +| github.com/golang/protobuf/proto | | false | Clone | | | Argument[0] | ReturnValue | taint | manual | +| github.com/golang/protobuf/proto | | false | Marshal | | | Argument[0] | ReturnValue[0] | taint | manual | +| github.com/golang/protobuf/proto | | false | Merge | | | Argument[1] | Argument[0] | taint | manual | +| github.com/golang/protobuf/proto | | false | Unmarshal | | | Argument[0] | Argument[1] | taint | manual | +| github.com/jmoiron/sqlx | | true | MapScan | | | Argument[0] | Argument[1] | taint | manual | +| github.com/jmoiron/sqlx | | true | SliceScan | | | Argument[0] | ReturnValue[0] | taint | manual | +| github.com/jmoiron/sqlx | | true | StructScan | | | Argument[0] | Argument[1] | taint | manual | +| github.com/jmoiron/sqlx | ColScanner | true | Scan | | | Argument[receiver] | Argument[0] | taint | manual | +| github.com/jmoiron/sqlx | Row | true | MapScan | | | Argument[receiver] | Argument[0] | taint | manual | +| github.com/jmoiron/sqlx | Row | true | Scan | | | Argument[receiver] | Argument[0] | taint | manual | +| github.com/jmoiron/sqlx | Row | true | SliceScan | | | Argument[receiver] | ReturnValue[0] | taint | manual | +| github.com/jmoiron/sqlx | Row | true | StructScan | | | Argument[receiver] | Argument[0] | taint | manual | +| github.com/jmoiron/sqlx | Rows | true | MapScan | | | Argument[receiver] | Argument[0] | taint | manual | +| github.com/jmoiron/sqlx | Rows | true | SliceScan | | | Argument[receiver] | ReturnValue[0] | taint | manual | +| github.com/jmoiron/sqlx | Rows | true | StructScan | | | Argument[receiver] | Argument[0] | taint | manual | +| github.com/json-iterator/go | | false | Unmarshal | | | Argument[0] | Argument[1] | taint | manual | +| github.com/json-iterator/go | | false | UnmarshalFromString | | | Argument[0] | Argument[1] | taint | manual | +| github.com/json-iterator/go | API | true | Unmarshal | | | Argument[0] | Argument[1] | taint | manual | +| github.com/json-iterator/go | API | true | UnmarshalFromString | | | Argument[0] | Argument[1] | taint | manual | +| github.com/labstack/echo | Context | true | Get | | | Argument[receiver] | ReturnValue | taint | manual | +| github.com/labstack/echo | Context | true | Set | | | Argument[1] | Argument[receiver] | taint | manual | +| github.com/sendgrid/sendgrid-go/helpers/mail | | false | NewContent | | | Argument[1] | ReturnValue | taint | manual | +| github.com/valyala/fasthttp | URI | true | Parse | | | Argument[0..1] | Argument[receiver] | taint | manual | +| github.com/valyala/fasthttp | URI | true | SetHost | | | Argument[0] | Argument[receiver] | taint | manual | +| github.com/valyala/fasthttp | URI | true | SetHostBytes | | | Argument[0] | Argument[receiver] | taint | manual | +| github.com/valyala/fasthttp | URI | true | Update | | | Argument[0] | Argument[receiver] | taint | manual | +| github.com/valyala/fasthttp | URI | true | UpdateBytes | | | Argument[0] | Argument[receiver] | taint | manual | +| go.mongodb.org/mongo-driver/mongo | ChangeStream | true | Decode | | | Argument[receiver] | Argument[0] | taint | manual | +| go.mongodb.org/mongo-driver/mongo | Cursor | true | All | | | Argument[receiver] | Argument[1] | taint | manual | +| go.mongodb.org/mongo-driver/mongo | Cursor | true | Decode | | | Argument[receiver] | Argument[0] | taint | manual | +| go.mongodb.org/mongo-driver/mongo | SingleResult | true | Decode | | | Argument[receiver] | Argument[0] | taint | manual | +| go.mongodb.org/mongo-driver/mongo | SingleResult | true | Raw | | | Argument[receiver] | ReturnValue[0] | taint | manual | +| go.uber.org/zap | | false | Any | | | Argument[0..1] | ReturnValue | taint | manual | +| go.uber.org/zap | | false | Binary | | | Argument[0..1] | ReturnValue | taint | manual | +| go.uber.org/zap | | false | ByteString | | | Argument[0..1] | ReturnValue | taint | manual | +| go.uber.org/zap | | false | ByteStrings | | | Argument[0..1] | ReturnValue | taint | manual | +| go.uber.org/zap | | false | Error | | | Argument[0] | ReturnValue | taint | manual | +| go.uber.org/zap | | false | Errors | | | Argument[0..1] | ReturnValue | taint | manual | +| go.uber.org/zap | | false | NamedError | | | Argument[0..1] | ReturnValue | taint | manual | +| go.uber.org/zap | | false | Reflect | | | Argument[0..1] | ReturnValue | taint | manual | +| go.uber.org/zap | | false | String | | | Argument[0..1] | ReturnValue | taint | manual | +| go.uber.org/zap | | false | Stringp | | | Argument[0..1] | ReturnValue | taint | manual | +| go.uber.org/zap | | false | Strings | | | Argument[0..1] | ReturnValue | taint | manual | +| golang.org/x/net/context | | false | WithCancel | | | Argument[0] | ReturnValue[0] | taint | manual | +| golang.org/x/net/context | | false | WithDeadline | | | Argument[0] | ReturnValue[0] | taint | manual | +| golang.org/x/net/context | | false | WithTimeout | | | Argument[0] | ReturnValue[0] | taint | manual | +| golang.org/x/net/context | | false | WithValue | | | Argument[0..2] | ReturnValue | taint | manual | +| golang.org/x/net/context | Context | true | Value | | | Argument[receiver] | ReturnValue | taint | manual | +| golang.org/x/net/html | | false | EscapeString | | | Argument[0] | ReturnValue | taint | manual | +| golang.org/x/net/html | | false | NewTokenizer | | | Argument[0] | ReturnValue | taint | manual | +| golang.org/x/net/html | | false | NewTokenizerFragment | | | Argument[0] | ReturnValue | taint | manual | +| golang.org/x/net/html | | false | Parse | | | Argument[0] | ReturnValue[0] | taint | manual | +| golang.org/x/net/html | | false | ParseFragment | | | Argument[0] | ReturnValue[0] | taint | manual | +| golang.org/x/net/html | | false | ParseFragmentWithOptions | | | Argument[0] | ReturnValue[0] | taint | manual | +| golang.org/x/net/html | | false | ParseWithOptions | | | Argument[0] | ReturnValue[0] | taint | manual | +| golang.org/x/net/html | | false | Render | | | Argument[1] | Argument[0] | taint | manual | +| golang.org/x/net/html | | false | UnescapeString | | | Argument[0] | ReturnValue | taint | manual | +| golang.org/x/net/html | Node | true | AppendChild | | | Argument[0] | Argument[receiver] | taint | manual | +| golang.org/x/net/html | Node | true | InsertBefore | | | Argument[0] | Argument[receiver] | taint | manual | +| golang.org/x/net/html | Tokenizer | true | Buffered | | | Argument[receiver] | ReturnValue | taint | manual | +| golang.org/x/net/html | Tokenizer | true | Raw | | | Argument[receiver] | ReturnValue | taint | manual | +| golang.org/x/net/html | Tokenizer | true | TagAttr | | | Argument[receiver] | ReturnValue[1] | taint | manual | +| golang.org/x/net/html | Tokenizer | true | Text | | | Argument[receiver] | ReturnValue | taint | manual | +| golang.org/x/net/html | Tokenizer | true | Token | | | Argument[receiver] | ReturnValue | taint | manual | +| google.golang.org/protobuf/internal/encoding/text | Token | true | String | | | Argument[receiver] | ReturnValue[0] | taint | manual | +| google.golang.org/protobuf/internal/impl | aberrantMessage | true | Get | | | Argument[receiver] | ReturnValue | taint | manual | +| google.golang.org/protobuf/internal/impl | aberrantMessage | true | GetUnknown | | | Argument[receiver] | ReturnValue | taint | manual | +| google.golang.org/protobuf/proto | | false | Clone | | | Argument[0] | ReturnValue | taint | manual | +| google.golang.org/protobuf/proto | | false | Marshal | | | Argument[0] | ReturnValue[0] | taint | manual | +| google.golang.org/protobuf/proto | | false | Merge | | | Argument[1] | Argument[0] | taint | manual | +| google.golang.org/protobuf/proto | | false | Unmarshal | | | Argument[0] | Argument[1] | taint | manual | +| google.golang.org/protobuf/proto | MarshalOptions | true | Marshal | | | Argument[0] | ReturnValue[0] | taint | manual | +| google.golang.org/protobuf/proto | MarshalOptions | true | MarshalAppend | | | Argument[1] | Argument[0] | taint | manual | +| google.golang.org/protobuf/proto | MarshalOptions | true | MarshalAppend | | | Argument[1] | ReturnValue[0] | taint | manual | +| google.golang.org/protobuf/proto | UnmarshalOptions | true | Unmarshal | | | Argument[0] | Argument[1] | taint | manual | +| google.golang.org/protobuf/reflect/protoreflect | ProtoMessage | true | ProtoReflect | | | Argument[receiver] | ReturnValue | taint | manual | +| gopkg.in/macaron | RequestBody | true | String | | | Argument[receiver] | ReturnValue[0] | taint | manual | +| gopkg.in/yaml | | false | Marshal | | | Argument[0] | ReturnValue[0] | taint | manual | +| gopkg.in/yaml | | false | NewDecoder | | | Argument[0] | ReturnValue | taint | manual | +| gopkg.in/yaml | | false | Unmarshal | | | Argument[0] | Argument[1] | taint | manual | +| gopkg.in/yaml | | false | UnmarshalStrict | | | Argument[0] | Argument[1] | taint | manual | +| gopkg.in/yaml | Decoder | true | Decode | | | Argument[receiver] | Argument[0] | taint | manual | +| gopkg.in/yaml | Encoder | true | Encode | | | Argument[0] | Argument[receiver] | taint | manual | +| gopkg.in/yaml | Node | true | Decode | | | Argument[receiver] | Argument[0] | taint | manual | +| gopkg.in/yaml | Node | true | Encode | | | Argument[0] | Argument[receiver] | taint | manual | +| gopkg.in/yaml | Node | true | SetString | | | Argument[0] | Argument[receiver] | taint | manual | +| group:beego | | false | HTML2str | | | Argument[0] | ReturnValue | taint | manual | +| group:beego | | false | Htmlquote | | | Argument[0] | ReturnValue | taint | manual | +| group:beego | | false | Htmlunquote | | | Argument[0] | ReturnValue | taint | manual | +| group:beego | | false | MapGet | | | Argument[0] | ReturnValue[0] | taint | manual | +| group:beego | | false | ParseForm | | | Argument[0] | Argument[1] | taint | manual | +| group:beego | | false | Str2html | | | Argument[0] | ReturnValue | taint | manual | +| group:beego | | false | Substr | | | Argument[0] | ReturnValue | taint | manual | +| group:beego-context | | false | WriteBody | | | Argument[2] | Argument[1] | taint | manual | +| group:beego-utils | | false | SliceChunk | | | Argument[0] | ReturnValue | taint | manual | +| group:beego-utils | | false | SliceDiff | | | Argument[0] | ReturnValue | taint | manual | +| group:beego-utils | | false | SliceFilter | | | Argument[0] | ReturnValue | taint | manual | +| group:beego-utils | | false | SliceIntersect | | | Argument[0..1] | ReturnValue | taint | manual | +| group:beego-utils | | false | SliceMerge | | | Argument[0..1] | ReturnValue | taint | manual | +| group:beego-utils | | false | SlicePad | | | Argument[0..2] | ReturnValue | taint | manual | +| group:beego-utils | | false | SliceRand | | | Argument[0] | ReturnValue | taint | manual | +| group:beego-utils | | false | SliceReduce | | | Argument[0] | ReturnValue | taint | manual | +| group:beego-utils | | false | SliceShuffle | | | Argument[0] | ReturnValue | taint | manual | +| group:beego-utils | | false | SliceUnique | | | Argument[0] | ReturnValue | taint | manual | +| group:beego-utils | BeeMap | true | Get | | | Argument[receiver] | ReturnValue | taint | manual | +| group:beego-utils | BeeMap | true | Items | | | Argument[receiver] | ReturnValue | taint | manual | +| group:beego-utils | BeeMap | true | Set | | | Argument[1] | Argument[receiver] | taint | manual | +| group:go-jose/jwt | | false | ParseEncrypted | | | Argument[0] | ReturnValue[0] | taint | manual | +| group:go-jose/jwt | | false | ParseSigned | | | Argument[0] | ReturnValue[0] | taint | manual | +| group:go-jose/jwt | NestedJSONWebToken | true | Decrypt | | | Argument[receiver] | ReturnValue[0] | taint | manual | +| group:go-jose/jwt | NestedJSONWebToken | true | ParseSignedAndEncrypted | | | Argument[0] | ReturnValue[0] | taint | manual | +| group:gocb1 | | false | NewAnalyticsQuery | | | Argument[0] | ReturnValue | taint | manual | +| group:gocb1 | | false | NewN1qlQuery | | | Argument[0] | ReturnValue | taint | manual | +| group:gocb1 | AnalyticsQuery | true | ContextId | | | Argument[receiver] | ReturnValue | taint | manual | +| group:gocb1 | AnalyticsQuery | true | Deferred | | | Argument[receiver] | ReturnValue | taint | manual | +| group:gocb1 | AnalyticsQuery | true | Pretty | | | Argument[receiver] | ReturnValue | taint | manual | +| group:gocb1 | AnalyticsQuery | true | Priority | | | Argument[receiver] | ReturnValue | taint | manual | +| group:gocb1 | AnalyticsQuery | true | RawParam | | | Argument[receiver] | ReturnValue | taint | manual | +| group:gocb1 | AnalyticsQuery | true | ServerSideTimeout | | | Argument[receiver] | ReturnValue | taint | manual | +| group:gocb1 | AnalyticsResults | true | Next | | | Argument[receiver] | Argument[0] | taint | manual | +| group:gocb1 | AnalyticsResults | true | NextBytes | | | Argument[receiver] | ReturnValue | taint | manual | +| group:gocb1 | AnalyticsResults | true | One | | | Argument[receiver] | Argument[0] | taint | manual | +| group:gocb1 | N1qlQuery | true | AdHoc | | | Argument[receiver] | ReturnValue | taint | manual | +| group:gocb1 | N1qlQuery | true | Consistency | | | Argument[receiver] | ReturnValue | taint | manual | +| group:gocb1 | N1qlQuery | true | ConsistentWith | | | Argument[receiver] | ReturnValue | taint | manual | +| group:gocb1 | N1qlQuery | true | Custom | | | Argument[receiver] | ReturnValue | taint | manual | +| group:gocb1 | N1qlQuery | true | PipelineBatch | | | Argument[receiver] | ReturnValue | taint | manual | +| group:gocb1 | N1qlQuery | true | PipelineCap | | | Argument[receiver] | ReturnValue | taint | manual | +| group:gocb1 | N1qlQuery | true | Profile | | | Argument[receiver] | ReturnValue | taint | manual | +| group:gocb1 | N1qlQuery | true | ReadOnly | | | Argument[receiver] | ReturnValue | taint | manual | +| group:gocb1 | N1qlQuery | true | ScanCap | | | Argument[receiver] | ReturnValue | taint | manual | +| group:gocb1 | N1qlQuery | true | Timeout | | | Argument[receiver] | ReturnValue | taint | manual | +| group:gocb1 | QueryResults | true | Next | | | Argument[receiver] | Argument[0] | taint | manual | +| group:gocb1 | QueryResults | true | NextBytes | | | Argument[receiver] | ReturnValue | taint | manual | +| group:gocb1 | QueryResults | true | One | | | Argument[receiver] | Argument[0] | taint | manual | +| group:gocb1 | SearchResults | true | Hits | | | Argument[receiver] | ReturnValue.ArrayElement | taint | manual | +| group:gocb2 | AnalyticsResult | true | One | | | Argument[receiver] | Argument[0] | taint | manual | +| group:gocb2 | AnalyticsResult | true | Raw | | | Argument[receiver] | ReturnValue | taint | manual | +| group:gocb2 | AnalyticsResult | true | Row | | | Argument[receiver] | Argument[0] | taint | manual | +| group:gocb2 | AnalyticsResultRaw | true | NextBytes | | | Argument[receiver] | ReturnValue | taint | manual | +| group:gocb2 | GetResult | true | Content | | | Argument[receiver] | Argument[0] | taint | manual | +| group:gocb2 | LookupInAllReplicasResult | true | Next | | | Argument[receiver] | ReturnValue | taint | manual | +| group:gocb2 | LookupInResult | true | ContentAt | | | Argument[receiver] | Argument[1] | taint | manual | +| group:gocb2 | MutateInResult | true | ContentAt | | | Argument[receiver] | Argument[1] | taint | manual | +| group:gocb2 | QueryResult | true | One | | | Argument[receiver] | Argument[0] | taint | manual | +| group:gocb2 | QueryResult | true | Raw | | | Argument[receiver] | ReturnValue | taint | manual | +| group:gocb2 | QueryResult | true | Row | | | Argument[receiver] | Argument[0] | taint | manual | +| group:gocb2 | QueryResultRaw | true | NextBytes | | | Argument[receiver] | ReturnValue | taint | manual | +| group:gocb2 | ScanResult | true | Next | | | Argument[receiver] | ReturnValue | taint | manual | +| group:gocb2 | ScanResultItem | true | Content | | | Argument[receiver] | Argument[0] | taint | manual | +| group:gocb2 | SearchResult | true | Raw | | | Argument[receiver] | ReturnValue | taint | manual | +| group:gocb2 | SearchResult | true | Row | | | Argument[receiver] | Argument[0] | taint | manual | +| group:gocb2 | SearchResultRaw | true | NextBytes | | | Argument[receiver] | ReturnValue | taint | manual | +| group:gocb2 | TransactionGetResult | true | Content | | | Argument[receiver] | Argument[0] | taint | manual | +| group:gocb2 | TransactionQueryResult | true | One | | | Argument[receiver] | Argument[0] | taint | manual | +| group:gocb2 | TransactionQueryResult | true | Row | | | Argument[receiver] | Argument[0] | taint | manual | +| group:gocb2 | ViewResult | true | Raw | | | Argument[receiver] | ReturnValue | taint | manual | +| group:gocb2 | ViewResult | true | Row | | | Argument[receiver] | ReturnValue | taint | manual | +| group:gocb2 | ViewResultRaw | true | NextBytes | | | Argument[receiver] | ReturnValue[0] | taint | manual | +| group:gorm | DB | true | ScanRows | | | Argument[0] | Argument[1] | taint | manual | +| group:gorqlite | QueryResult | true | Map | | | Argument[receiver] | ReturnValue[0] | taint | manual | +| group:gorqlite | QueryResult | true | Slice | | | Argument[receiver] | ReturnValue[0] | taint | manual | +| group:revel | Params | true | Bind | | | Argument[receiver] | Argument[0] | taint | manual | +| group:revel | Params | true | BindJSON | | | Argument[receiver] | Argument[0] | taint | manual | +| group:revel | RevelHeader | true | Add | | | Argument[0..1] | Argument[receiver] | taint | manual | +| group:revel | RevelHeader | true | Get | | | Argument[receiver] | ReturnValue | taint | manual | +| group:revel | RevelHeader | true | GetAll | | | Argument[receiver] | ReturnValue | taint | manual | +| group:revel | RevelHeader | true | Set | | | Argument[0..1] | Argument[receiver] | taint | manual | +| group:revel | RevelHeader | true | SetCookie | | | Argument[0] | Argument[receiver] | taint | manual | +| group:revel | ServerCookie | true | GetValue | | | Argument[receiver] | ReturnValue | taint | manual | +| group:revel | ServerMultipartForm | true | GetFiles | | | Argument[receiver] | ReturnValue | taint | manual | +| group:revel | ServerMultipartForm | true | GetValues | | | Argument[receiver] | ReturnValue | taint | manual | +| html | | false | EscapeString | | | Argument[0] | ReturnValue | taint | manual | +| html | | false | UnescapeString | | | Argument[0] | ReturnValue | taint | manual | +| html/template | | false | HTMLEscape | | | Argument[1] | Argument[0] | taint | manual | +| html/template | | false | HTMLEscapeString | | | Argument[0] | ReturnValue | taint | manual | +| html/template | | false | JSEscape | | | Argument[1] | Argument[0] | taint | manual | +| html/template | | false | JSEscapeString | | | Argument[0] | ReturnValue | taint | manual | +| html/template | Template | true | Execute | | | Argument[1] | Argument[0] | taint | manual | +| html/template | Template | true | ExecuteTemplate | | | Argument[2] | Argument[0] | taint | manual | +| io | | false | Copy | | | Argument[1] | Argument[0] | taint | manual | +| io | | false | CopyBuffer | | | Argument[1] | Argument[0] | taint | manual | +| io | | false | CopyN | | | Argument[1] | Argument[0] | taint | manual | +| io | | false | LimitReader | | | Argument[0] | ReturnValue | taint | manual | +| io | | false | NewSectionReader | | | Argument[0] | ReturnValue | taint | manual | +| io | | false | NopCloser | | | Argument[0] | ReturnValue | taint | manual | +| io | | false | ReadAll | | | Argument[0] | ReturnValue[0] | taint | manual | +| io | | false | ReadAtLeast | | | Argument[0] | Argument[1] | taint | manual | +| io | | false | ReadFull | | | Argument[0] | Argument[1] | taint | manual | +| io | | false | TeeReader | | | Argument[0] | Argument[1] | taint | manual | +| io | | false | TeeReader | | | Argument[0] | ReturnValue | taint | manual | +| io | | false | WriteString | | | Argument[1] | Argument[0] | taint | manual | +| io | Reader | true | Read | | | Argument[receiver] | Argument[0] | taint | manual | +| io | ReaderAt | true | ReadAt | | | Argument[receiver] | Argument[0] | taint | manual | +| io | ReaderFrom | true | ReadFrom | | | Argument[0] | Argument[receiver] | taint | manual | +| io | StringWriter | true | WriteString | | | Argument[0] | Argument[receiver] | taint | manual | +| io | Writer | true | Write | | | Argument[0] | Argument[receiver] | taint | manual | +| io | WriterAt | true | WriteAt | | | Argument[0] | Argument[receiver] | taint | manual | +| io | WriterTo | true | WriteTo | | | Argument[receiver] | Argument[0] | taint | manual | +| io/fs | | false | FileInfoToDirEntry | | | Argument[0] | ReturnValue | taint | manual | +| io/fs | | false | Glob | | | Argument[0] | ReturnValue[0] | taint | manual | +| io/fs | | false | ReadDir | | | Argument[0] | ReturnValue[0] | taint | manual | +| io/fs | | false | ReadFile | | | Argument[0] | ReturnValue[0] | taint | manual | +| io/fs | | false | Sub | | | Argument[0] | ReturnValue[0] | taint | manual | +| io/fs | DirEntry | true | Info | | | Argument[receiver] | ReturnValue[0] | taint | manual | +| io/fs | DirEntry | true | Name | | | Argument[receiver] | ReturnValue | taint | manual | +| io/fs | FS | true | Open | | | Argument[receiver] | ReturnValue[0] | taint | manual | +| io/fs | File | true | Read | | | Argument[receiver] | Argument[0] | taint | manual | +| io/fs | GlobFS | true | Glob | | | Argument[receiver] | ReturnValue[0] | taint | manual | +| io/fs | ReadDirFS | true | ReadDir | | | Argument[receiver] | ReturnValue[0] | taint | manual | +| io/fs | ReadFileFS | true | ReadFile | | | Argument[receiver] | ReturnValue[0] | taint | manual | +| io/fs | SubFS | true | Sub | | | Argument[receiver] | ReturnValue[0] | taint | manual | +| io/ioutil | | false | NopCloser | | | Argument[0] | ReturnValue | taint | manual | +| io/ioutil | | false | ReadAll | | | Argument[0] | ReturnValue[0] | taint | manual | +| k8s.io/api/core | Secret | true | DeepCopy | | | Argument[receiver] | ReturnValue | taint | manual | +| k8s.io/api/core | Secret | true | DeepCopyInto | | | Argument[receiver] | Argument[0] | taint | manual | +| k8s.io/api/core | Secret | true | DeepCopyObject | | | Argument[receiver] | ReturnValue | taint | manual | +| k8s.io/api/core | Secret | true | Marshal | | | Argument[receiver] | ReturnValue[0] | taint | manual | +| k8s.io/api/core | Secret | true | Unmarshal | | | Argument[receiver] | Argument[0] | taint | manual | +| k8s.io/api/core | SecretList | true | DeepCopy | | | Argument[receiver] | ReturnValue | taint | manual | +| k8s.io/api/core | SecretList | true | DeepCopyInto | | | Argument[receiver] | Argument[0] | taint | manual | +| k8s.io/api/core | SecretList | true | DeepCopyObject | | | Argument[receiver] | ReturnValue | taint | manual | +| k8s.io/api/core | SecretList | true | Marshal | | | Argument[receiver] | ReturnValue[0] | taint | manual | +| k8s.io/api/core | SecretList | true | Unmarshal | | | Argument[receiver] | Argument[0] | taint | manual | +| k8s.io/apimachinery/pkg/runtime | | false | Convert_Slice_string_To_Pointer_int64 | | | Argument[0] | Argument[1] | taint | manual | +| k8s.io/apimachinery/pkg/runtime | | false | Convert_Slice_string_To_int | | | Argument[0] | Argument[1] | taint | manual | +| k8s.io/apimachinery/pkg/runtime | | false | Convert_Slice_string_To_int64 | | | Argument[0] | Argument[1] | taint | manual | +| k8s.io/apimachinery/pkg/runtime | | false | Convert_Slice_string_To_string | | | Argument[0] | Argument[1] | taint | manual | +| k8s.io/apimachinery/pkg/runtime | | false | Convert_runtime_Object_To_runtime_RawExtension | | | Argument[0] | Argument[1] | taint | manual | +| k8s.io/apimachinery/pkg/runtime | | false | Convert_runtime_RawExtension_To_runtime_Object | | | Argument[0] | Argument[1] | taint | manual | +| k8s.io/apimachinery/pkg/runtime | | false | Convert_string_To_Pointer_int64 | | | Argument[0] | Argument[1] | taint | manual | +| k8s.io/apimachinery/pkg/runtime | | false | Convert_string_To_int64 | | | Argument[0] | Argument[1] | taint | manual | +| k8s.io/apimachinery/pkg/runtime | | false | Decode | | | Argument[1] | ReturnValue[0] | taint | manual | +| k8s.io/apimachinery/pkg/runtime | | false | DecodeInto | | | Argument[1] | Argument[2] | taint | manual | +| k8s.io/apimachinery/pkg/runtime | | false | DeepCopyJSON | | | Argument[0] | ReturnValue | taint | manual | +| k8s.io/apimachinery/pkg/runtime | | false | DeepCopyJSONValue | | | Argument[0] | ReturnValue | taint | manual | +| k8s.io/apimachinery/pkg/runtime | | false | Encode | | | Argument[1] | ReturnValue[0] | taint | manual | +| k8s.io/apimachinery/pkg/runtime | | false | EncodeOrDie | | | Argument[1] | ReturnValue | taint | manual | +| k8s.io/apimachinery/pkg/runtime | | false | Field | | | Argument[0] | Argument[2] | taint | manual | +| k8s.io/apimachinery/pkg/runtime | | false | FieldPtr | | | Argument[0] | Argument[2] | taint | manual | +| k8s.io/apimachinery/pkg/runtime | | false | NewEncodable | | | Argument[1] | ReturnValue | taint | manual | +| k8s.io/apimachinery/pkg/runtime | | false | NewEncodableList | | | Argument[1] | ReturnValue | taint | manual | +| k8s.io/apimachinery/pkg/runtime | | false | SetField | | | Argument[0] | Argument[1] | taint | manual | +| k8s.io/apimachinery/pkg/runtime | | false | UseOrCreateObject | | | Argument[3] | ReturnValue[0] | taint | manual | +| k8s.io/apimachinery/pkg/runtime | CacheableObject | true | CacheEncode | | | Argument[receiver] | Argument[2] | taint | manual | +| k8s.io/apimachinery/pkg/runtime | CacheableObject | true | GetObject | | | Argument[receiver] | ReturnValue | taint | manual | +| k8s.io/apimachinery/pkg/runtime | Decoder | true | Decode | | | Argument[0] | Argument[2] | taint | manual | +| k8s.io/apimachinery/pkg/runtime | Decoder | true | Decode | | | Argument[0] | ReturnValue[0] | taint | manual | +| k8s.io/apimachinery/pkg/runtime | Encoder | true | Encode | | | Argument[0] | Argument[1] | taint | manual | +| k8s.io/apimachinery/pkg/runtime | Framer | true | NewFrameReader | | | Argument[0] | ReturnValue | taint | manual | +| k8s.io/apimachinery/pkg/runtime | Framer | true | NewFrameWriter | | | Argument[0] | ReturnValue | taint | manual | +| k8s.io/apimachinery/pkg/runtime | Object | true | DeepCopyObject | | | Argument[receiver] | ReturnValue | taint | manual | +| k8s.io/apimachinery/pkg/runtime | ObjectConvertor | true | Convert | | | Argument[0] | Argument[1] | taint | manual | +| k8s.io/apimachinery/pkg/runtime | ObjectVersioner | true | ConvertToVersion | | | Argument[0] | ReturnValue[0] | taint | manual | +| k8s.io/apimachinery/pkg/runtime | ParameterCodec | true | DecodeParameters | | | Argument[0] | Argument[2] | taint | manual | +| k8s.io/apimachinery/pkg/runtime | ParameterCodec | true | EncodeParameters | | | Argument[0] | ReturnValue[0] | taint | manual | +| k8s.io/apimachinery/pkg/runtime | ProtobufMarshaller | true | MarshalTo | | | Argument[receiver] | Argument[0] | taint | manual | +| k8s.io/apimachinery/pkg/runtime | ProtobufReverseMarshaller | true | MarshalToSizedBuffer | | | Argument[receiver] | Argument[0] | taint | manual | +| k8s.io/apimachinery/pkg/runtime | RawExtension | true | DeepCopy | | | Argument[receiver] | ReturnValue | taint | manual | +| k8s.io/apimachinery/pkg/runtime | RawExtension | true | DeepCopyInto | | | Argument[receiver] | Argument[0] | taint | manual | +| k8s.io/apimachinery/pkg/runtime | RawExtension | true | Marshal | | | Argument[receiver] | ReturnValue[0] | taint | manual | +| k8s.io/apimachinery/pkg/runtime | RawExtension | true | Unmarshal | | | Argument[receiver] | Argument[0] | taint | manual | +| k8s.io/apimachinery/pkg/runtime | Unknown | true | DeepCopy | | | Argument[receiver] | ReturnValue | taint | manual | +| k8s.io/apimachinery/pkg/runtime | Unknown | true | DeepCopyInto | | | Argument[receiver] | Argument[0] | taint | manual | +| k8s.io/apimachinery/pkg/runtime | Unknown | true | Marshal | | | Argument[receiver] | ReturnValue[0] | taint | manual | +| k8s.io/apimachinery/pkg/runtime | Unknown | true | NestedMarshalTo | | | Argument[receiver] | Argument[0] | taint | manual | +| k8s.io/apimachinery/pkg/runtime | Unknown | true | Unmarshal | | | Argument[receiver] | Argument[0] | taint | manual | +| k8s.io/apimachinery/pkg/runtime | Unstructured | true | SetUnstructuredContent | | | Argument[0] | Argument[receiver] | taint | manual | +| k8s.io/apimachinery/pkg/runtime | Unstructured | true | UnstructuredContent | | | Argument[receiver] | ReturnValue | taint | manual | +| k8s.io/apimachinery/pkg/runtime | WithoutVersionDecoder | true | Decode | | | Argument[0] | Argument[2] | taint | manual | +| k8s.io/apimachinery/pkg/runtime | WithoutVersionDecoder | true | Decode | | | Argument[0] | ReturnValue[0] | taint | manual | +| log | Logger | true | SetOutput | | | Argument[receiver] | Argument[0] | taint | manual | +| log | Logger | true | SetPrefix | | | Argument[0] | Argument[receiver] | taint | manual | +| log | Logger | true | Writer | | | Argument[receiver] | ReturnValue | taint | manual | +| log/slog | | false | Any | | | Argument[0..1] | ReturnValue | taint | manual | +| log/slog | | false | AnyValue | | | Argument[0] | ReturnValue | taint | manual | +| log/slog | | false | Group | | | Argument[0] | ReturnValue | taint | manual | +| log/slog | | false | Group | | | Argument[1].ArrayElement | ReturnValue | taint | manual | +| log/slog | | false | GroupAttrs | | | Argument[0] | ReturnValue | taint | manual | +| log/slog | | false | GroupAttrs | | | Argument[1].ArrayElement | ReturnValue | taint | manual | +| log/slog | | false | GroupValue | | | Argument[0].ArrayElement | ReturnValue | taint | manual | +| log/slog | | false | String | | | Argument[0..1] | ReturnValue | taint | manual | +| log/slog | | false | StringValue | | | Argument[0] | ReturnValue | taint | manual | +| log/slog | Attr | true | String | | | Argument[receiver] | ReturnValue | taint | manual | +| log/slog | Value | true | Any | | | Argument[receiver] | ReturnValue | taint | manual | +| log/slog | Value | true | Group | | | Argument[receiver] | ReturnValue.ArrayElement | taint | manual | +| log/slog | Value | true | String | | | Argument[receiver] | ReturnValue | taint | manual | +| maps | | false | Clone | | | Argument[0].MapKey | ReturnValue.MapKey | value | manual | +| maps | | false | Clone | | | Argument[0].MapValue | ReturnValue.MapValue | value | manual | +| maps | | false | Copy | | | Argument[1].MapKey | Argument[0].MapKey | value | manual | +| maps | | false | Copy | | | Argument[1].MapValue | Argument[0].MapValue | value | manual | +| math/big | Int | true | Int64 | | | Argument[receiver] | ReturnValue[0] | taint | manual | +| mime | | false | FormatMediaType | | | Argument[0..1] | ReturnValue | taint | manual | +| mime | | false | ParseMediaType | | | Argument[0] | ReturnValue[0..1] | taint | manual | +| mime | WordDecoder | true | Decode | | | Argument[0] | ReturnValue[0] | taint | manual | +| mime | WordDecoder | true | DecodeHeader | | | Argument[0] | ReturnValue[0] | taint | manual | +| mime | WordEncoder | true | Encode | | | Argument[1] | ReturnValue | taint | manual | +| mime/multipart | | false | NewReader | | | Argument[0] | ReturnValue | taint | manual | +| mime/multipart | FileHeader | true | Open | | | Argument[receiver] | ReturnValue[0] | taint | manual | +| mime/multipart | Part | true | FileName | | | Argument[receiver] | ReturnValue | taint | manual | +| mime/multipart | Part | true | FormName | | | Argument[receiver] | ReturnValue | taint | manual | +| mime/multipart | Reader | true | NextPart | | | Argument[receiver] | ReturnValue[0] | taint | manual | +| mime/multipart | Reader | true | NextRawPart | | | Argument[receiver] | ReturnValue[0] | taint | manual | +| mime/multipart | Reader | true | ReadForm | | | Argument[receiver] | ReturnValue[0] | taint | manual | +| mime/multipart | Writer | true | WriteField | | | Argument[0..1] | Argument[receiver] | taint | manual | +| mime/quotedprintable | | false | NewReader | | | Argument[0] | ReturnValue | taint | manual | +| net | | false | FileConn | | | Argument[0] | ReturnValue[0] | taint | manual | +| net | | false | FilePacketConn | | | Argument[0] | ReturnValue[0] | taint | manual | +| net | | false | JoinHostPort | | | Argument[0..1] | ReturnValue | taint | manual | +| net | | false | SplitHostPort | | | Argument[0] | ReturnValue[0..1] | taint | manual | +| net | IPConn | true | ReadFromIP | | | Argument[receiver] | Argument[0] | taint | manual | +| net | IPConn | true | ReadMsgIP | | | Argument[receiver] | Argument[0..1] | taint | manual | +| net | IPConn | true | WriteMsgIP | | | Argument[0..1] | Argument[receiver] | taint | manual | +| net | IPConn | true | WriteToIP | | | Argument[0] | Argument[receiver] | taint | manual | +| net | PacketConn | true | ReadFrom | | | Argument[receiver] | Argument[0] | taint | manual | +| net | PacketConn | true | WriteTo | | | Argument[0] | Argument[receiver] | taint | manual | +| net | TCPListener | true | File | | | Argument[receiver] | ReturnValue[0] | taint | manual | +| net | UDPConn | true | ReadFromUDP | | | Argument[receiver] | Argument[0] | taint | manual | +| net | UDPConn | true | ReadMsgUDP | | | Argument[receiver] | Argument[0..1] | taint | manual | +| net | UDPConn | true | WriteMsgUDP | | | Argument[0..1] | Argument[receiver] | taint | manual | +| net | UDPConn | true | WriteToUDP | | | Argument[0] | Argument[receiver] | taint | manual | +| net | UnixConn | true | ReadFromUnix | | | Argument[receiver] | Argument[0] | taint | manual | +| net | UnixConn | true | ReadMsgUnix | | | Argument[receiver] | Argument[0..1] | taint | manual | +| net | UnixConn | true | WriteMsgUnix | | | Argument[0..1] | Argument[receiver] | taint | manual | +| net | UnixConn | true | WriteToUnix | | | Argument[0] | Argument[receiver] | taint | manual | +| net | UnixListener | true | File | | | Argument[receiver] | ReturnValue[0] | taint | manual | +| net/http | | false | CanonicalHeaderKey | | | Argument[0] | ReturnValue | taint | manual | +| net/http | | false | Error | | | Argument[1] | Argument[0] | taint | manual | +| net/http | | false | MaxBytesReader | | | Argument[1] | ReturnValue | taint | manual | +| net/http | | false | NewRequest | | | Argument[1] | ReturnValue[0] | taint | manual | +| net/http | | false | NewRequestWithContext | | | Argument[2] | ReturnValue[0] | taint | manual | +| net/http | | false | ReadRequest | | | Argument[0] | ReturnValue[0] | taint | manual | +| net/http | | false | ReadResponse | | | Argument[0] | ReturnValue[0] | taint | manual | +| net/http | | false | SetCookie | | | Argument[1] | Argument[0] | taint | manual | +| net/http | Header | true | Add | | | Argument[0..1] | Argument[receiver] | taint | manual | +| net/http | Header | true | Clone | | | Argument[receiver] | ReturnValue | taint | manual | +| net/http | Header | true | Get | | | Argument[receiver] | ReturnValue | taint | manual | +| net/http | Header | true | Set | | | Argument[0..1] | Argument[receiver] | taint | manual | +| net/http | Header | true | Values | | | Argument[receiver] | ReturnValue | taint | manual | +| net/http | Header | true | Write | | | Argument[receiver] | Argument[0] | taint | manual | +| net/http | Header | true | WriteSubset | | | Argument[receiver] | Argument[0] | taint | manual | +| net/http | Hijacker | true | Hijack | | | Argument[receiver] | ReturnValue[0..1] | taint | manual | +| net/http | Request | true | AddCookie | | | Argument[0] | Argument[receiver] | taint | manual | +| net/http | Request | true | Clone | | | Argument[receiver] | ReturnValue | taint | manual | +| net/http | Request | true | Write | | | Argument[receiver] | Argument[0] | taint | manual | +| net/http | Request | true | WriteProxy | | | Argument[receiver] | Argument[0] | taint | manual | +| net/http | Response | true | Write | | | Argument[receiver] | Argument[0] | taint | manual | +| net/http | Transport | true | Clone | | | Argument[receiver] | ReturnValue | taint | manual | +| net/http/httputil | | false | DumpRequest | | | Argument[0] | ReturnValue[0] | taint | manual | +| net/http/httputil | | false | DumpRequestOut | | | Argument[0] | ReturnValue[0] | taint | manual | +| net/http/httputil | | false | DumpResponse | | | Argument[0] | ReturnValue[0] | taint | manual | +| net/http/httputil | | false | NewChunkedReader | | | Argument[0] | ReturnValue | taint | manual | +| net/http/httputil | | false | NewClientConn | | | Argument[0..1] | ReturnValue | taint | manual | +| net/http/httputil | | false | NewProxyClientConn | | | Argument[0..1] | ReturnValue | taint | manual | +| net/http/httputil | BufferPool | true | Get | | | Argument[receiver] | ReturnValue | taint | manual | +| net/http/httputil | BufferPool | true | Put | | | Argument[0] | Argument[receiver] | taint | manual | +| net/http/httputil | ClientConn | true | Hijack | | | Argument[receiver] | ReturnValue[0..1] | taint | manual | +| net/http/httputil | ServerConn | true | Hijack | | | Argument[receiver] | ReturnValue[0..1] | taint | manual | +| net/mail | | false | ParseAddress | | | Argument[0] | ReturnValue[0] | taint | manual | +| net/mail | | false | ParseAddressList | | | Argument[0] | ReturnValue[0] | taint | manual | +| net/mail | | false | ReadMessage | | | Argument[0] | ReturnValue[0] | taint | manual | +| net/mail | AddressParser | true | Parse | | | Argument[0] | ReturnValue[0] | taint | manual | +| net/mail | AddressParser | true | ParseList | | | Argument[0] | ReturnValue[0] | taint | manual | +| net/mail | Header | true | Get | | | Argument[receiver] | ReturnValue | taint | manual | +| net/textproto | | false | CanonicalMIMEHeaderKey | | | Argument[0] | ReturnValue | taint | manual | +| net/textproto | | false | NewConn | | | Argument[0] | ReturnValue | taint | manual | +| net/textproto | | false | NewReader | | | Argument[0] | ReturnValue | taint | manual | +| net/textproto | | false | TrimBytes | | | Argument[0] | ReturnValue | taint | manual | +| net/textproto | | false | TrimString | | | Argument[0] | ReturnValue | taint | manual | +| net/textproto | MIMEHeader | true | Add | | | Argument[0..1] | Argument[receiver] | taint | manual | +| net/textproto | MIMEHeader | true | Get | | | Argument[receiver] | ReturnValue | taint | manual | +| net/textproto | MIMEHeader | true | Set | | | Argument[0..1] | Argument[receiver] | taint | manual | +| net/textproto | MIMEHeader | true | Values | | | Argument[receiver] | ReturnValue | taint | manual | +| net/textproto | Reader | true | DotReader | | | Argument[receiver] | ReturnValue | taint | manual | +| net/textproto | Reader | true | ReadCodeLine | | | Argument[receiver] | ReturnValue[1] | taint | manual | +| net/textproto | Reader | true | ReadContinuedLine | | | Argument[receiver] | ReturnValue[0] | taint | manual | +| net/textproto | Reader | true | ReadContinuedLineBytes | | | Argument[receiver] | ReturnValue[0] | taint | manual | +| net/textproto | Reader | true | ReadDotBytes | | | Argument[receiver] | ReturnValue[0] | taint | manual | +| net/textproto | Reader | true | ReadDotLines | | | Argument[receiver] | ReturnValue[0] | taint | manual | +| net/textproto | Reader | true | ReadLine | | | Argument[receiver] | ReturnValue[0] | taint | manual | +| net/textproto | Reader | true | ReadLineBytes | | | Argument[receiver] | ReturnValue[0] | taint | manual | +| net/textproto | Reader | true | ReadMIMEHeader | | | Argument[receiver] | ReturnValue[0] | taint | manual | +| net/textproto | Reader | true | ReadResponse | | | Argument[receiver] | ReturnValue[1] | taint | manual | +| net/url | | false | Parse | | | Argument[0] | ReturnValue[0] | taint | manual | +| net/url | | false | ParseQuery | | | Argument[0] | ReturnValue[0] | taint | manual | +| net/url | | false | ParseRequestURI | | | Argument[0] | ReturnValue[0] | taint | manual | +| net/url | | false | PathEscape | | | Argument[0] | ReturnValue | taint | manual | +| net/url | | false | PathUnescape | | | Argument[0] | ReturnValue[0] | taint | manual | +| net/url | | false | QueryEscape | | | Argument[0] | ReturnValue | taint | manual | +| net/url | | false | QueryUnescape | | | Argument[0] | ReturnValue[0] | taint | manual | +| net/url | | false | User | | | Argument[0] | ReturnValue | taint | manual | +| net/url | | false | UserPassword | | | Argument[0..1] | ReturnValue | taint | manual | +| net/url | URL | true | Clone | | | Argument[receiver] | ReturnValue | taint | manual | +| net/url | URL | true | EscapedPath | | | Argument[receiver] | ReturnValue | taint | manual | +| net/url | URL | true | Hostname | | | Argument[receiver] | ReturnValue | taint | manual | +| net/url | URL | true | MarshalBinary | | | Argument[receiver] | ReturnValue[0] | taint | manual | +| net/url | URL | true | Parse | | | Argument[0] | ReturnValue[0] | taint | manual | +| net/url | URL | true | Parse | | | Argument[receiver] | ReturnValue[0] | taint | manual | +| net/url | URL | true | Port | | | Argument[receiver] | ReturnValue | taint | manual | +| net/url | URL | true | Query | | | Argument[receiver] | ReturnValue | taint | manual | +| net/url | URL | true | RequestURI | | | Argument[receiver] | ReturnValue | taint | manual | +| net/url | URL | true | ResolveReference | | | Argument[0] | ReturnValue | taint | manual | +| net/url | URL | true | ResolveReference | | | Argument[receiver] | ReturnValue | taint | manual | +| net/url | Userinfo | true | Password | | | Argument[receiver] | ReturnValue[0] | taint | manual | +| net/url | Userinfo | true | Username | | | Argument[receiver] | ReturnValue | taint | manual | +| net/url | Values | true | Clone | | | Argument[receiver] | ReturnValue | taint | manual | +| net/url | Values | true | Encode | | | Argument[receiver] | ReturnValue | taint | manual | +| net/url | Values | true | Get | | | Argument[receiver] | ReturnValue | taint | manual | +| os | | false | Expand | | | Argument[0] | ReturnValue | taint | manual | +| os | | false | ExpandEnv | | | Argument[0] | ReturnValue | taint | manual | +| os | | false | NewFile | | | Argument[0] | ReturnValue | taint | manual | +| os | File | true | Fd | | | Argument[receiver] | ReturnValue | taint | manual | +| os | File | true | Read | | | Argument[receiver] | Argument[0] | taint | manual | +| os | File | true | ReadAt | | | Argument[receiver] | Argument[0] | taint | manual | +| path | | false | Base | | | Argument[0] | ReturnValue | taint | manual | +| path | | false | Clean | | | Argument[0] | ReturnValue | taint | manual | +| path | | false | Dir | | | Argument[0] | ReturnValue | taint | manual | +| path | | false | Ext | | | Argument[0] | ReturnValue | taint | manual | +| path | | false | Split | | | Argument[0] | ReturnValue[0..1] | taint | manual | +| path/filepath | | false | Abs | | | Argument[0] | ReturnValue[0] | taint | manual | +| path/filepath | | false | Base | | | Argument[0] | ReturnValue | taint | manual | +| path/filepath | | false | Clean | | | Argument[0] | ReturnValue | taint | manual | +| path/filepath | | false | Dir | | | Argument[0] | ReturnValue | taint | manual | +| path/filepath | | false | EvalSymlinks | | | Argument[0] | ReturnValue[0] | taint | manual | +| path/filepath | | false | Ext | | | Argument[0] | ReturnValue | taint | manual | +| path/filepath | | false | FromSlash | | | Argument[0] | ReturnValue | taint | manual | +| path/filepath | | false | Glob | | | Argument[0] | ReturnValue[0] | taint | manual | +| path/filepath | | false | Rel | | | Argument[0..1] | ReturnValue[0] | taint | manual | +| path/filepath | | false | Split | | | Argument[0] | ReturnValue[0..1] | taint | manual | +| path/filepath | | false | SplitList | | | Argument[0] | ReturnValue | taint | manual | +| path/filepath | | false | ToSlash | | | Argument[0] | ReturnValue | taint | manual | +| path/filepath | | false | VolumeName | | | Argument[0] | ReturnValue | taint | manual | +| reflect | | false | AppendSlice | | | Argument[0..1] | ReturnValue | taint | manual | +| reflect | | false | Copy | | | Argument[1] | Argument[0] | taint | manual | +| reflect | | false | Indirect | | | Argument[0] | ReturnValue | taint | manual | +| reflect | | false | ValueOf | | | Argument[0] | ReturnValue | taint | manual | +| reflect | MapIter | true | Key | | | Argument[receiver] | ReturnValue | taint | manual | +| reflect | MapIter | true | Value | | | Argument[receiver] | ReturnValue | taint | manual | +| reflect | StructTag | true | Get | | | Argument[receiver] | ReturnValue | taint | manual | +| reflect | StructTag | true | Lookup | | | Argument[receiver] | ReturnValue[0] | taint | manual | +| reflect | Value | true | Addr | | | Argument[receiver] | ReturnValue | taint | manual | +| reflect | Value | true | Bytes | | | Argument[receiver] | ReturnValue | taint | manual | +| reflect | Value | true | Convert | | | Argument[receiver] | ReturnValue | taint | manual | +| reflect | Value | true | Elem | | | Argument[receiver] | ReturnValue | taint | manual | +| reflect | Value | true | Field | | | Argument[receiver] | ReturnValue | taint | manual | +| reflect | Value | true | FieldByIndex | | | Argument[receiver] | ReturnValue | taint | manual | +| reflect | Value | true | FieldByName | | | Argument[receiver] | ReturnValue | taint | manual | +| reflect | Value | true | FieldByNameFunc | | | Argument[receiver] | ReturnValue | taint | manual | +| reflect | Value | true | Index | | | Argument[receiver] | ReturnValue | taint | manual | +| reflect | Value | true | Interface | | | Argument[receiver] | ReturnValue | taint | manual | +| reflect | Value | true | InterfaceData | | | Argument[receiver] | ReturnValue | taint | manual | +| reflect | Value | true | MapIndex | | | Argument[receiver] | ReturnValue | taint | manual | +| reflect | Value | true | MapKeys | | | Argument[receiver] | ReturnValue | taint | manual | +| reflect | Value | true | MapRange | | | Argument[receiver] | ReturnValue | taint | manual | +| reflect | Value | true | Method | | | Argument[receiver] | ReturnValue | taint | manual | +| reflect | Value | true | MethodByName | | | Argument[receiver] | ReturnValue | taint | manual | +| reflect | Value | true | Pointer | | | Argument[receiver] | ReturnValue | taint | manual | +| reflect | Value | true | Recv | | | Argument[receiver] | ReturnValue[0] | taint | manual | +| reflect | Value | true | Send | | | Argument[0] | Argument[receiver] | taint | manual | +| reflect | Value | true | Set | | | Argument[0] | Argument[receiver] | taint | manual | +| reflect | Value | true | SetBytes | | | Argument[0] | Argument[receiver] | taint | manual | +| reflect | Value | true | SetMapIndex | | | Argument[0..1] | Argument[receiver] | taint | manual | +| reflect | Value | true | SetPointer | | | Argument[0] | Argument[receiver] | taint | manual | +| reflect | Value | true | SetString | | | Argument[0] | Argument[receiver] | taint | manual | +| reflect | Value | true | Slice | | | Argument[receiver] | ReturnValue | taint | manual | +| reflect | Value | true | Slice3 | | | Argument[receiver] | ReturnValue | taint | manual | +| reflect | Value | true | TryRecv | | | Argument[receiver] | ReturnValue[0] | taint | manual | +| reflect | Value | true | TrySend | | | Argument[0] | Argument[receiver] | taint | manual | +| reflect | Value | true | UnsafeAddr | | | Argument[receiver] | ReturnValue | taint | manual | +| regexp | | false | QuoteMeta | | | Argument[0] | ReturnValue | taint | manual | +| regexp | Regexp | true | Expand | | | Argument[1..2] | Argument[0] | taint | manual | +| regexp | Regexp | true | Expand | | | Argument[1..2] | ReturnValue | taint | manual | +| regexp | Regexp | true | ExpandString | | | Argument[1..2] | Argument[0] | taint | manual | +| regexp | Regexp | true | ExpandString | | | Argument[1..2] | ReturnValue | taint | manual | +| regexp | Regexp | true | Find | | | Argument[0] | ReturnValue | taint | manual | +| regexp | Regexp | true | FindAll | | | Argument[0] | ReturnValue | taint | manual | +| regexp | Regexp | true | FindAllString | | | Argument[0] | ReturnValue | taint | manual | +| regexp | Regexp | true | FindAllStringSubmatch | | | Argument[0] | ReturnValue | taint | manual | +| regexp | Regexp | true | FindAllSubmatch | | | Argument[0] | ReturnValue | taint | manual | +| regexp | Regexp | true | FindString | | | Argument[0] | ReturnValue | taint | manual | +| regexp | Regexp | true | FindStringSubmatch | | | Argument[0] | ReturnValue | taint | manual | +| regexp | Regexp | true | FindSubmatch | | | Argument[0] | ReturnValue | taint | manual | +| regexp | Regexp | true | ReplaceAll | | | Argument[0..1] | ReturnValue | taint | manual | +| regexp | Regexp | true | ReplaceAllFunc | | | Argument[0..1] | ReturnValue | taint | manual | +| regexp | Regexp | true | ReplaceAllLiteral | | | Argument[0..1] | ReturnValue | taint | manual | +| regexp | Regexp | true | ReplaceAllLiteralString | | | Argument[0..1] | ReturnValue | taint | manual | +| regexp | Regexp | true | ReplaceAllString | | | Argument[0..1] | ReturnValue | taint | manual | +| regexp | Regexp | true | ReplaceAllStringFunc | | | Argument[0..1] | ReturnValue | taint | manual | +| regexp | Regexp | true | Split | | | Argument[0] | ReturnValue | taint | manual | +| slices | | false | Clip | | | Argument[0].ArrayElement | ReturnValue.ArrayElement | value | manual | +| slices | | false | Clone | | | Argument[0].ArrayElement | ReturnValue.ArrayElement | value | manual | +| slices | | false | Compact | | | Argument[0].ArrayElement | ReturnValue.ArrayElement | value | manual | +| slices | | false | CompactFunc | | | Argument[0].ArrayElement | ReturnValue.ArrayElement | value | manual | +| slices | | false | Concat | | | Argument[0].ArrayElement.ArrayElement | ReturnValue.ArrayElement | value | manual | +| slices | | false | Delete | | | Argument[0].ArrayElement | ReturnValue.ArrayElement | value | manual | +| slices | | false | DeleteFunc | | | Argument[0].ArrayElement | ReturnValue.ArrayElement | value | manual | +| slices | | false | Grow | | | Argument[0].ArrayElement | ReturnValue.ArrayElement | value | manual | +| slices | | false | Insert | | | Argument[0].ArrayElement | ReturnValue.ArrayElement | value | manual | +| slices | | false | Insert | | | Argument[2].ArrayElement | ReturnValue.ArrayElement | value | manual | +| slices | | false | Max | | | Argument[0].ArrayElement | ReturnValue | value | manual | +| slices | | false | MaxFunc | | | Argument[0].ArrayElement | ReturnValue | value | manual | +| slices | | false | Min | | | Argument[0].ArrayElement | ReturnValue | value | manual | +| slices | | false | MinFunc | | | Argument[0].ArrayElement | ReturnValue | value | manual | +| slices | | false | Repeat | | | Argument[0].ArrayElement | ReturnValue.ArrayElement | value | manual | +| slices | | false | Replace | | | Argument[0].ArrayElement | ReturnValue.ArrayElement | value | manual | +| slices | | false | Replace | | | Argument[3].ArrayElement | ReturnValue.ArrayElement | value | manual | +| sort | | false | Reverse | | | Argument[0] | ReturnValue | taint | manual | +| strconv | | false | AppendQuote | | | Argument[0..1] | ReturnValue | taint | manual | +| strconv | | false | AppendQuoteToASCII | | | Argument[0..1] | ReturnValue | taint | manual | +| strconv | | false | AppendQuoteToGraphic | | | Argument[0..1] | ReturnValue | taint | manual | +| strconv | | false | Quote | | | Argument[0] | ReturnValue | taint | manual | +| strconv | | false | QuoteToASCII | | | Argument[0] | ReturnValue | taint | manual | +| strconv | | false | QuoteToGraphic | | | Argument[0] | ReturnValue | taint | manual | +| strconv | | false | QuotedPrefix | | | Argument[0] | ReturnValue[0] | taint | manual | +| strconv | | false | Unquote | | | Argument[0] | ReturnValue[0] | taint | manual | +| strconv | | false | UnquoteChar | | | Argument[0] | ReturnValue[2] | taint | manual | +| strings | | false | Clone | | | Argument[0] | ReturnValue | value | manual | +| strings | | false | Cut | | | Argument[0] | ReturnValue[0..1] | taint | manual | +| strings | | false | CutLast | | | Argument[0] | ReturnValue[0..1] | taint | manual | +| strings | | false | CutPrefix | | | Argument[0] | ReturnValue[0] | taint | manual | +| strings | | false | CutSuffix | | | Argument[0] | ReturnValue[0] | taint | manual | +| strings | | false | Fields | | | Argument[0] | ReturnValue.ArrayElement | taint | manual | +| strings | | false | FieldsFunc | | | Argument[0] | ReturnValue.ArrayElement | taint | manual | +| strings | | false | Join | | | Argument[0].ArrayElement | ReturnValue | taint | manual | +| strings | | false | Join | | | Argument[1] | ReturnValue | taint | manual | +| strings | | false | Map | | | Argument[1] | ReturnValue | taint | manual | +| strings | | false | NewReader | | | Argument[0] | ReturnValue | taint | manual | +| strings | | false | Repeat | | | Argument[0] | ReturnValue | taint | manual | +| strings | | false | Replace | | | Argument[0] | ReturnValue | taint | manual | +| strings | | false | Replace | | | Argument[2] | ReturnValue | taint | manual | +| strings | | false | ReplaceAll | | | Argument[0] | ReturnValue | taint | manual | +| strings | | false | ReplaceAll | | | Argument[2] | ReturnValue | taint | manual | +| strings | | false | Split | | | Argument[0] | ReturnValue | taint | manual | +| strings | | false | SplitAfter | | | Argument[0] | ReturnValue | taint | manual | +| strings | | false | SplitAfterN | | | Argument[0] | ReturnValue | taint | manual | +| strings | | false | SplitN | | | Argument[0] | ReturnValue | taint | manual | +| strings | | false | Title | | | Argument[0] | ReturnValue | taint | manual | +| strings | | false | ToLower | | | Argument[0] | ReturnValue | taint | manual | +| strings | | false | ToLowerSpecial | | | Argument[1] | ReturnValue | taint | manual | +| strings | | false | ToTitle | | | Argument[0] | ReturnValue | taint | manual | +| strings | | false | ToTitleSpecial | | | Argument[1] | ReturnValue | taint | manual | +| strings | | false | ToUpper | | | Argument[0] | ReturnValue | taint | manual | +| strings | | false | ToUpperSpecial | | | Argument[1] | ReturnValue | taint | manual | +| strings | | false | ToValidUTF8 | | | Argument[0..1] | ReturnValue | taint | manual | +| strings | | false | Trim | | | Argument[0] | ReturnValue | taint | manual | +| strings | | false | TrimFunc | | | Argument[0] | ReturnValue | taint | manual | +| strings | | false | TrimLeft | | | Argument[0] | ReturnValue | taint | manual | +| strings | | false | TrimLeftFunc | | | Argument[0] | ReturnValue | taint | manual | +| strings | | false | TrimPrefix | | | Argument[0] | ReturnValue | taint | manual | +| strings | | false | TrimRight | | | Argument[0] | ReturnValue | taint | manual | +| strings | | false | TrimRightFunc | | | Argument[0] | ReturnValue | taint | manual | +| strings | | false | TrimSpace | | | Argument[0] | ReturnValue | taint | manual | +| strings | | false | TrimSuffix | | | Argument[0] | ReturnValue | taint | manual | +| strings | Builder | true | String | | | Argument[receiver] | ReturnValue | taint | manual | +| strings | Builder | true | WriteByte | | | Argument[0] | Argument[receiver] | taint | manual | +| strings | Builder | true | WriteRune | | | Argument[0] | Argument[receiver] | taint | manual | +| strings | Reader | true | ReadByte | | | Argument[receiver] | ReturnValue[0] | taint | manual | +| strings | Reader | true | ReadRune | | | Argument[receiver] | ReturnValue[0] | taint | manual | +| strings | Reader | true | Reset | | | Argument[0] | Argument[receiver] | taint | manual | +| strings | Replacer | true | Replace | | | Argument[0] | ReturnValue | taint | manual | +| strings | Replacer | true | Replace | | | Argument[receiver] | ReturnValue | taint | manual | +| strings | Replacer | true | WriteString | | | Argument[1] | Argument[0] | taint | manual | +| strings | Replacer | true | WriteString | | | Argument[receiver] | Argument[0] | taint | manual | +| sync | Map | true | CompareAndSwap | | | Argument[2] | Argument[receiver] | taint | manual | +| sync | Map | true | Load | | | Argument[receiver] | ReturnValue[0] | taint | manual | +| sync | Map | true | LoadOrStore | | | Argument[1] | Argument[receiver] | taint | manual | +| sync | Map | true | LoadOrStore | | | Argument[1] | ReturnValue[0] | taint | manual | +| sync | Map | true | LoadOrStore | | | Argument[receiver] | ReturnValue[0] | taint | manual | +| sync | Map | true | Store | | | Argument[1] | Argument[receiver] | taint | manual | +| sync | Map | true | Swap | | | Argument[1] | Argument[receiver] | taint | manual | +| sync | Map | true | Swap | | | Argument[receiver] | ReturnValue[0] | taint | manual | +| sync | Pool | true | Get | | | Argument[receiver] | ReturnValue | taint | manual | +| sync | Pool | true | Put | | | Argument[0] | Argument[receiver] | taint | manual | +| sync/atomic | | false | AddUintptr | | | Argument[1] | Argument[0] | taint | manual | +| sync/atomic | | false | AddUintptr | | | Argument[1] | ReturnValue | taint | manual | +| sync/atomic | | false | CompareAndSwapPointer | | | Argument[2] | Argument[0] | taint | manual | +| sync/atomic | | false | CompareAndSwapUintptr | | | Argument[2] | Argument[0] | taint | manual | +| sync/atomic | | false | LoadPointer | | | Argument[0] | ReturnValue | taint | manual | +| sync/atomic | | false | LoadUintptr | | | Argument[0] | ReturnValue | taint | manual | +| sync/atomic | | false | StorePointer | | | Argument[1] | Argument[0] | taint | manual | +| sync/atomic | | false | StoreUintptr | | | Argument[1] | Argument[0] | taint | manual | +| sync/atomic | | false | SwapPointer | | | Argument[0] | ReturnValue | taint | manual | +| sync/atomic | | false | SwapPointer | | | Argument[1] | Argument[0] | taint | manual | +| sync/atomic | | false | SwapUintptr | | | Argument[0] | ReturnValue | taint | manual | +| sync/atomic | | false | SwapUintptr | | | Argument[1] | Argument[0] | taint | manual | +| sync/atomic | Pointer | true | Load | | | Argument[receiver] | ReturnValue | taint | manual | +| sync/atomic | Pointer | true | Store | | | Argument[0] | Argument[receiver] | taint | manual | +| sync/atomic | Pointer | true | Swap | | | Argument[0] | Argument[receiver] | taint | manual | +| sync/atomic | Pointer | true | Swap | | | Argument[receiver] | ReturnValue | taint | manual | +| sync/atomic | Uintptr | true | Load | | | Argument[receiver] | ReturnValue | taint | manual | +| sync/atomic | Uintptr | true | Store | | | Argument[0] | Argument[receiver] | taint | manual | +| sync/atomic | Uintptr | true | Swap | | | Argument[0] | Argument[receiver] | taint | manual | +| sync/atomic | Uintptr | true | Swap | | | Argument[receiver] | ReturnValue | taint | manual | +| sync/atomic | Value | true | Load | | | Argument[receiver] | ReturnValue | taint | manual | +| sync/atomic | Value | true | Store | | | Argument[0] | Argument[receiver] | taint | manual | +| sync/atomic | Value | true | Swap | | | Argument[0] | Argument[receiver] | taint | manual | +| sync/atomic | Value | true | Swap | | | Argument[receiver] | ReturnValue | taint | manual | +| syscall | | false | BytePtrFromString | | | Argument[0] | ReturnValue[0] | taint | manual | +| syscall | | false | ByteSliceFromString | | | Argument[0] | ReturnValue[0] | taint | manual | +| syscall | | false | StringBytePtr | | | Argument[0] | ReturnValue | taint | manual | +| syscall | | false | StringByteSlice | | | Argument[0] | ReturnValue | taint | manual | +| syscall | | false | StringSlicePtr | | | Argument[0] | ReturnValue | taint | manual | +| syscall | Conn | true | SyscallConn | | | Argument[receiver] | ReturnValue[0] | taint | manual | +| syscall | RawConn | true | Read | | | Argument[receiver] | Argument[0] | taint | manual | +| syscall | RawConn | true | Write | | | Argument[0] | Argument[receiver] | taint | manual | +| text/scanner | Scanner | true | Init | | | Argument[0] | Argument[receiver] | taint | manual | +| text/scanner | Scanner | true | Init | | | Argument[0] | ReturnValue | taint | manual | +| text/scanner | Scanner | true | TokenText | | | Argument[receiver] | ReturnValue | taint | manual | +| text/tabwriter | Writer | true | Init | | | Argument[receiver] | Argument[0] | taint | manual | +| text/template | | false | HTMLEscape | | | Argument[1] | Argument[0] | taint | manual | +| text/template | | false | HTMLEscapeString | | | Argument[0] | ReturnValue | taint | manual | +| text/template | | false | JSEscape | | | Argument[1] | Argument[0] | taint | manual | +| text/template | | false | JSEscapeString | | | Argument[0] | ReturnValue | taint | manual | +| weak | | false | Make | | | Argument[0] | ReturnValue[0] | taint | manual | +| weak | Pointer | false | Value | | | Argument[receiver] | ReturnValue[0] | taint | manual | diff --git a/go/ql/test/modelconversion/EnumerateModels.ql b/go/ql/test/modelconversion/EnumerateModels.ql new file mode 100644 index 000000000000..307dc655764f --- /dev/null +++ b/go/ql/test/modelconversion/EnumerateModels.ql @@ -0,0 +1,48 @@ +import semmle.go.dataflow.internal.ExternalFlowExtensions + +/* + * Note: madId columns are ignored, since renaming extension files causes them to be loaded in a + * different order, and the generated values in that column do not match as a result. + */ + +query predicate barrierGuardModels( + string package, string type, boolean subtypes, string name, string signature, string ext, + string input, string acceptingValue, string kind, string provenance +) { + barrierGuardModel(package, type, subtypes, name, signature, ext, input, acceptingValue, kind, + provenance, _) +} + +query predicate barrierModels( + string package, string type, boolean subtypes, string name, string signature, string ext, + string output, string kind, string provenance +) { + barrierModel(package, type, subtypes, name, signature, ext, output, kind, provenance, _) +} + +query predicate neutralModels( + string package, string type, string name, string signature, string kind, string provenance +) { + neutralModel(package, type, name, signature, kind, provenance) +} + +query predicate sinkModels( + string package, string type, boolean subtypes, string name, string signature, string ext, + string input, string kind, string provenance +) { + sinkModel(package, type, subtypes, name, signature, ext, input, kind, provenance, _) +} + +query predicate sourceModels( + string package, string type, boolean subtypes, string name, string signature, string ext, + string output, string kind, string provenance +) { + sourceModel(package, type, subtypes, name, signature, ext, output, kind, provenance, _) +} + +query predicate summaryModels( + string package, string type, boolean subtypes, string name, string signature, string ext, + string input, string output, string kind, string provenance +) { + summaryModel(package, type, subtypes, name, signature, ext, input, output, kind, provenance, _) +} diff --git a/go/ql/test/modelconversion/test.go b/go/ql/test/modelconversion/test.go new file mode 100644 index 000000000000..06ab7d0f9a35 --- /dev/null +++ b/go/ql/test/modelconversion/test.go @@ -0,0 +1 @@ +package main