Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 0 additions & 4 deletions go/ql/lib/semmle/go/dataflow/internal/DataFlowPrivate.qll
Original file line number Diff line number Diff line change
Expand Up @@ -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]
Expand Down
11 changes: 9 additions & 2 deletions go/ql/lib/semmle/go/frameworks/stdlib/IoFs.qll
Original file line number Diff line number Diff line change
Expand Up @@ -21,9 +21,16 @@ module IoFs {
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)
f.(DataFlow::FuncLitNode).getASuccessor*() = call.getArgument(2)
or
exists(DataFlow::ExprNode functionName |
f.(DataFlow::GlobalFunctionNode).getFunction() =
functionName.asExpr().(FunctionName).getTarget()
|
functionName.getASuccessor*() = call.getArgument(2)
)
|
call.getTarget().hasQualifiedName(packagePath(), "WalkDir") and
pred = call.getArgument(0) and
succ = f.getParameter([0, 1])
)
Expand Down
Original file line number Diff line number Diff line change
@@ -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 |
Expand All @@ -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 |
Expand Down
Original file line number Diff line number Diff line change
@@ -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 |
Expand Down
Loading