mirror of
https://github.com/github/codeql.git
synced 2026-05-14 11:19:27 +02:00
Merge pull request #21721 from owen-mc/go/remove-global-function-jump-step-from-local-flow
Go: Remove global function step from local flow
This commit is contained in:
@@ -19,10 +19,6 @@ private module Input implements InputSig<Location, Impl::GoDataFlow> {
|
||||
|
||||
predicate uniqueNodeLocationExclude(DataFlow::Node n) { missingLocationExclude(n) }
|
||||
|
||||
predicate localFlowIsLocalExclude(DataFlow::Node n1, DataFlow::Node n2) {
|
||||
n1 instanceof DataFlow::FunctionNode and simpleLocalFlowStep(n1, n2, _)
|
||||
}
|
||||
|
||||
predicate argHasPostUpdateExclude(DataFlow::ArgumentNode n) {
|
||||
not DataFlow::insnHasPostUpdateNode(n.asInstruction())
|
||||
}
|
||||
|
||||
@@ -95,10 +95,6 @@ predicate basicLocalFlowStep(Node nodeFrom, Node nodeTo) {
|
||||
nodeTo = instructionNode(succ) and
|
||||
nodeTo != nodeFrom
|
||||
)
|
||||
or
|
||||
// GlobalFunctionNode -> use
|
||||
nodeFrom =
|
||||
any(GlobalFunctionNode fn | fn.getFunction() = nodeTo.asExpr().(FunctionName).getTarget())
|
||||
}
|
||||
|
||||
pragma[noinline]
|
||||
|
||||
@@ -20,10 +20,13 @@ module IoFs {
|
||||
private class WalkDirStep extends TaintTracking::AdditionalTaintStep {
|
||||
override predicate step(DataFlow::Node pred, DataFlow::Node succ) {
|
||||
//signature: func WalkDir(fsys FS, root string, fn WalkDirFunc) error
|
||||
exists(DataFlow::CallNode call, DataFlow::FunctionNode f |
|
||||
call.getTarget().hasQualifiedName(packagePath(), "WalkDir") and
|
||||
f.getASuccessor*() = call.getArgument(2)
|
||||
exists(DataFlow::CallNode call, DataFlow::FunctionNode f, DataFlow::Node n |
|
||||
n = f.(DataFlow::FuncLitNode)
|
||||
or
|
||||
n.asExpr().(FunctionName).getTarget() = f.(DataFlow::GlobalFunctionNode).getFunction()
|
||||
|
|
||||
call.getTarget().hasQualifiedName(packagePath(), "WalkDir") and
|
||||
n.getASuccessor*() = call.getArgument(2) and
|
||||
pred = call.getArgument(0) and
|
||||
succ = f.getParameter([0, 1])
|
||||
)
|
||||
|
||||
@@ -1,52 +1,3 @@
|
||||
| file://:0:0:0:0 | function Encode | url.go:51:14:51:21 | selection of Encode |
|
||||
| file://:0:0:0:0 | function EscapedPath | url.go:28:14:28:26 | selection of EscapedPath |
|
||||
| file://:0:0:0:0 | function Get | url.go:52:14:52:18 | selection of Get |
|
||||
| file://:0:0:0:0 | function Hostname | url.go:29:14:29:23 | selection of Hostname |
|
||||
| file://:0:0:0:0 | function JoinPath | url.go:57:16:57:27 | selection of JoinPath |
|
||||
| file://:0:0:0:0 | function JoinPath | url.go:58:16:58:27 | selection of JoinPath |
|
||||
| file://:0:0:0:0 | function JoinPath | url.go:60:15:60:28 | selection of JoinPath |
|
||||
| file://:0:0:0:0 | function JoinPath | url.go:66:9:66:25 | selection of JoinPath |
|
||||
| file://:0:0:0:0 | function MarshalBinary | url.go:30:11:30:25 | selection of MarshalBinary |
|
||||
| file://:0:0:0:0 | function Parse | url.go:23:10:23:18 | selection of Parse |
|
||||
| file://:0:0:0:0 | function Parse | url.go:32:9:32:15 | selection of Parse |
|
||||
| file://:0:0:0:0 | function Parse | url.go:59:14:59:22 | selection of Parse |
|
||||
| file://:0:0:0:0 | function Parse | url.go:65:17:65:25 | selection of Parse |
|
||||
| file://:0:0:0:0 | function ParseQuery | url.go:50:10:50:23 | selection of ParseQuery |
|
||||
| file://:0:0:0:0 | function ParseRequestURI | url.go:27:9:27:27 | selection of ParseRequestURI |
|
||||
| file://:0:0:0:0 | function Password | url.go:43:11:43:21 | selection of Password |
|
||||
| file://:0:0:0:0 | function PathEscape | url.go:12:31:12:44 | selection of PathEscape |
|
||||
| file://:0:0:0:0 | function PathUnescape | url.go:12:14:12:29 | selection of PathUnescape |
|
||||
| file://:0:0:0:0 | function Port | url.go:33:14:33:19 | selection of Port |
|
||||
| file://:0:0:0:0 | function Println | url.go:28:2:28:12 | selection of Println |
|
||||
| file://:0:0:0:0 | function Println | url.go:29:2:29:12 | selection of Println |
|
||||
| file://:0:0:0:0 | function Println | url.go:31:2:31:12 | selection of Println |
|
||||
| file://:0:0:0:0 | function Println | url.go:33:2:33:12 | selection of Println |
|
||||
| file://:0:0:0:0 | function Println | url.go:34:2:34:12 | selection of Println |
|
||||
| file://:0:0:0:0 | function Println | url.go:35:2:35:12 | selection of Println |
|
||||
| file://:0:0:0:0 | function Println | url.go:44:2:44:12 | selection of Println |
|
||||
| file://:0:0:0:0 | function Println | url.go:45:2:45:12 | selection of Println |
|
||||
| file://:0:0:0:0 | function Println | url.go:51:2:51:12 | selection of Println |
|
||||
| file://:0:0:0:0 | function Println | url.go:52:2:52:12 | selection of Println |
|
||||
| file://:0:0:0:0 | function Query | url.go:34:14:34:20 | selection of Query |
|
||||
| file://:0:0:0:0 | function QueryEscape | url.go:14:32:14:46 | selection of QueryEscape |
|
||||
| file://:0:0:0:0 | function QueryUnescape | url.go:14:14:14:30 | selection of QueryUnescape |
|
||||
| file://:0:0:0:0 | function Replace | strings.go:9:8:9:22 | selection of Replace |
|
||||
| file://:0:0:0:0 | function ReplaceAll | strings.go:10:8:10:25 | selection of ReplaceAll |
|
||||
| file://:0:0:0:0 | function RequestURI | url.go:35:14:35:25 | selection of RequestURI |
|
||||
| file://:0:0:0:0 | function ResolveReference | url.go:36:6:36:23 | selection of ResolveReference |
|
||||
| file://:0:0:0:0 | function Sprint | strings.go:11:9:11:18 | selection of Sprint |
|
||||
| file://:0:0:0:0 | function Sprintf | strings.go:11:30:11:40 | selection of Sprintf |
|
||||
| file://:0:0:0:0 | function Sprintln | strings.go:11:54:11:65 | selection of Sprintln |
|
||||
| file://:0:0:0:0 | function User | url.go:41:8:41:15 | selection of User |
|
||||
| file://:0:0:0:0 | function UserPassword | url.go:42:7:42:22 | selection of UserPassword |
|
||||
| file://:0:0:0:0 | function Username | url.go:45:14:45:24 | selection of Username |
|
||||
| file://:0:0:0:0 | function append | main.go:39:8:39:13 | append |
|
||||
| file://:0:0:0:0 | function append | main.go:40:8:40:13 | append |
|
||||
| file://:0:0:0:0 | function copy | main.go:42:2:42:5 | copy |
|
||||
| file://:0:0:0:0 | function make | main.go:41:8:41:11 | make |
|
||||
| file://:0:0:0:0 | function max | main.go:65:7:65:9 | max |
|
||||
| file://:0:0:0:0 | function min | main.go:64:7:64:9 | min |
|
||||
| main.go:3:6:3:10 | function test1 | main.go:34:2:34:6 | test1 |
|
||||
| main.go:3:12:3:12 | argument corresponding to x | main.go:3:12:3:12 | definition of x |
|
||||
| main.go:3:12:3:12 | definition of x | main.go:5:5:5:5 | x |
|
||||
| main.go:3:19:3:20 | argument corresponding to fn | main.go:3:19:3:20 | definition of fn |
|
||||
@@ -66,8 +17,6 @@
|
||||
| main.go:10:12:10:12 | y | main.go:10:17:10:17 | y |
|
||||
| main.go:10:17:10:27 | ...>=... | main.go:10:7:10:27 | ...&&... |
|
||||
| main.go:11:14:11:14 | z | main.go:11:9:11:15 | type conversion |
|
||||
| main.go:14:6:14:10 | function test2 | main.go:34:8:34:12 | test2 |
|
||||
| main.go:14:6:14:10 | function test2 | main.go:34:19:34:23 | test2 |
|
||||
| main.go:15:9:15:9 | 0 | main.go:15:2:15:4 | definition of acc |
|
||||
| main.go:16:9:19:2 | capture variable acc | main.go:17:3:17:5 | acc |
|
||||
| main.go:17:3:17:7 | definition of acc | main.go:18:10:18:12 | acc |
|
||||
|
||||
@@ -1,83 +1,3 @@
|
||||
| main.go:3:6:3:11 | function source | main.go:23:31:23:36 | source |
|
||||
| main.go:3:6:3:11 | function source | main.go:31:31:31:36 | source |
|
||||
| main.go:3:6:3:11 | function source | main.go:40:30:40:35 | source |
|
||||
| main.go:3:6:3:11 | function source | main.go:46:32:46:37 | source |
|
||||
| main.go:3:6:3:11 | function source | main.go:54:17:54:22 | source |
|
||||
| main.go:3:6:3:11 | function source | main.go:62:18:62:23 | source |
|
||||
| main.go:3:6:3:11 | function source | main.go:72:17:72:22 | source |
|
||||
| main.go:3:6:3:11 | function source | main.go:80:18:80:23 | source |
|
||||
| main.go:3:6:3:11 | function source | main.go:91:16:91:21 | source |
|
||||
| main.go:3:6:3:11 | function source | main.go:98:17:98:22 | source |
|
||||
| main.go:3:6:3:11 | function source | main.go:107:22:107:27 | source |
|
||||
| main.go:3:6:3:11 | function source | main.go:114:23:114:28 | source |
|
||||
| main.go:3:6:3:11 | function source | main.go:123:23:123:28 | source |
|
||||
| main.go:3:6:3:11 | function source | main.go:130:24:130:29 | source |
|
||||
| main.go:3:6:3:11 | function source | main.go:139:29:139:34 | source |
|
||||
| main.go:3:6:3:11 | function source | main.go:146:30:146:35 | source |
|
||||
| main.go:7:6:7:9 | function sink | main.go:25:2:25:5 | sink |
|
||||
| main.go:7:6:7:9 | function sink | main.go:26:2:26:5 | sink |
|
||||
| main.go:7:6:7:9 | function sink | main.go:27:2:27:5 | sink |
|
||||
| main.go:7:6:7:9 | function sink | main.go:28:2:28:5 | sink |
|
||||
| main.go:7:6:7:9 | function sink | main.go:33:2:33:5 | sink |
|
||||
| main.go:7:6:7:9 | function sink | main.go:34:2:34:5 | sink |
|
||||
| main.go:7:6:7:9 | function sink | main.go:35:2:35:5 | sink |
|
||||
| main.go:7:6:7:9 | function sink | main.go:36:2:36:5 | sink |
|
||||
| main.go:7:6:7:9 | function sink | main.go:41:2:41:5 | sink |
|
||||
| main.go:7:6:7:9 | function sink | main.go:42:2:42:5 | sink |
|
||||
| main.go:7:6:7:9 | function sink | main.go:43:2:43:5 | sink |
|
||||
| main.go:7:6:7:9 | function sink | main.go:44:2:44:5 | sink |
|
||||
| main.go:7:6:7:9 | function sink | main.go:47:2:47:5 | sink |
|
||||
| main.go:7:6:7:9 | function sink | main.go:48:2:48:5 | sink |
|
||||
| main.go:7:6:7:9 | function sink | main.go:49:2:49:5 | sink |
|
||||
| main.go:7:6:7:9 | function sink | main.go:50:2:50:5 | sink |
|
||||
| main.go:7:6:7:9 | function sink | main.go:57:2:57:5 | sink |
|
||||
| main.go:7:6:7:9 | function sink | main.go:58:2:58:5 | sink |
|
||||
| main.go:7:6:7:9 | function sink | main.go:59:2:59:5 | sink |
|
||||
| main.go:7:6:7:9 | function sink | main.go:60:2:60:5 | sink |
|
||||
| main.go:7:6:7:9 | function sink | main.go:65:2:65:5 | sink |
|
||||
| main.go:7:6:7:9 | function sink | main.go:66:2:66:5 | sink |
|
||||
| main.go:7:6:7:9 | function sink | main.go:67:2:67:5 | sink |
|
||||
| main.go:7:6:7:9 | function sink | main.go:68:2:68:5 | sink |
|
||||
| main.go:7:6:7:9 | function sink | main.go:75:2:75:5 | sink |
|
||||
| main.go:7:6:7:9 | function sink | main.go:76:2:76:5 | sink |
|
||||
| main.go:7:6:7:9 | function sink | main.go:77:2:77:5 | sink |
|
||||
| main.go:7:6:7:9 | function sink | main.go:78:2:78:5 | sink |
|
||||
| main.go:7:6:7:9 | function sink | main.go:83:2:83:5 | sink |
|
||||
| main.go:7:6:7:9 | function sink | main.go:84:2:84:5 | sink |
|
||||
| main.go:7:6:7:9 | function sink | main.go:85:2:85:5 | sink |
|
||||
| main.go:7:6:7:9 | function sink | main.go:86:2:86:5 | sink |
|
||||
| main.go:7:6:7:9 | function sink | main.go:92:2:92:5 | sink |
|
||||
| main.go:7:6:7:9 | function sink | main.go:93:2:93:5 | sink |
|
||||
| main.go:7:6:7:9 | function sink | main.go:94:2:94:5 | sink |
|
||||
| main.go:7:6:7:9 | function sink | main.go:95:2:95:5 | sink |
|
||||
| main.go:7:6:7:9 | function sink | main.go:99:2:99:5 | sink |
|
||||
| main.go:7:6:7:9 | function sink | main.go:100:2:100:5 | sink |
|
||||
| main.go:7:6:7:9 | function sink | main.go:101:2:101:5 | sink |
|
||||
| main.go:7:6:7:9 | function sink | main.go:102:2:102:5 | sink |
|
||||
| main.go:7:6:7:9 | function sink | main.go:108:2:108:5 | sink |
|
||||
| main.go:7:6:7:9 | function sink | main.go:109:2:109:5 | sink |
|
||||
| main.go:7:6:7:9 | function sink | main.go:110:2:110:5 | sink |
|
||||
| main.go:7:6:7:9 | function sink | main.go:111:2:111:5 | sink |
|
||||
| main.go:7:6:7:9 | function sink | main.go:115:2:115:5 | sink |
|
||||
| main.go:7:6:7:9 | function sink | main.go:116:2:116:5 | sink |
|
||||
| main.go:7:6:7:9 | function sink | main.go:117:2:117:5 | sink |
|
||||
| main.go:7:6:7:9 | function sink | main.go:118:2:118:5 | sink |
|
||||
| main.go:7:6:7:9 | function sink | main.go:124:2:124:5 | sink |
|
||||
| main.go:7:6:7:9 | function sink | main.go:125:2:125:5 | sink |
|
||||
| main.go:7:6:7:9 | function sink | main.go:126:2:126:5 | sink |
|
||||
| main.go:7:6:7:9 | function sink | main.go:127:2:127:5 | sink |
|
||||
| main.go:7:6:7:9 | function sink | main.go:131:2:131:5 | sink |
|
||||
| main.go:7:6:7:9 | function sink | main.go:132:2:132:5 | sink |
|
||||
| main.go:7:6:7:9 | function sink | main.go:133:2:133:5 | sink |
|
||||
| main.go:7:6:7:9 | function sink | main.go:134:2:134:5 | sink |
|
||||
| main.go:7:6:7:9 | function sink | main.go:140:2:140:5 | sink |
|
||||
| main.go:7:6:7:9 | function sink | main.go:141:2:141:5 | sink |
|
||||
| main.go:7:6:7:9 | function sink | main.go:142:2:142:5 | sink |
|
||||
| main.go:7:6:7:9 | function sink | main.go:143:2:143:5 | sink |
|
||||
| main.go:7:6:7:9 | function sink | main.go:147:2:147:5 | sink |
|
||||
| main.go:7:6:7:9 | function sink | main.go:148:2:148:5 | sink |
|
||||
| main.go:7:6:7:9 | function sink | main.go:149:2:149:5 | sink |
|
||||
| main.go:7:6:7:9 | function sink | main.go:150:2:150:5 | sink |
|
||||
| main.go:22:2:22:6 | definition of outer | main.go:25:7:25:11 | outer |
|
||||
| main.go:22:11:24:2 | struct literal | main.go:22:2:22:6 | definition of outer |
|
||||
| main.go:22:11:24:2 | struct literal [postupdate] | main.go:22:2:22:6 | definition of outer |
|
||||
|
||||
Reference in New Issue
Block a user