Skip to content

Commit 85e99fe

Browse files
committed
Swift: Have swift/unsafe-webview-fetch use indices instead of parameter names.
1 parent d87117f commit 85e99fe

File tree

1 file changed

+11
-6
lines changed

1 file changed

+11
-6
lines changed

swift/ql/src/queries/Security/CWE-079/UnsafeWebViewFetch.ql

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -26,30 +26,35 @@ class Sink extends DataFlow::Node {
2626
Expr baseUrl;
2727

2828
Sink() {
29-
exists(MethodDecl funcDecl, CallExpr call, string className, string funcName, string paramName |
29+
exists(
30+
MethodDecl funcDecl, CallExpr call, string className, string funcName, int arg, int baseArg
31+
|
3032
// arguments to method calls...
3133
(
3234
// `loadHTMLString`
3335
className = ["UIWebView", "WKWebView"] and
3436
funcName = "loadHTMLString(_:baseURL:)" and
35-
paramName = "string"
37+
arg = 0 and
38+
baseArg = 1
3639
or
3740
// `UIWebView.load`
3841
className = "UIWebView" and
3942
funcName = "load(_:mimeType:textEncodingName:baseURL:)" and
40-
paramName = "data"
43+
arg = 0 and
44+
baseArg = 3
4145
or
4246
// `WKWebView.load`
4347
className = "WKWebView" and
4448
funcName = "load(_:mimeType:characterEncodingName:baseURL:)" and
45-
paramName = "data"
49+
arg = 0 and
50+
baseArg = 3
4651
) and
4752
call.getStaticTarget() = funcDecl and
4853
// match up `funcName`, `paramName`, `arg`, `node`.
4954
funcDecl.hasQualifiedName(className, funcName) and
50-
call.getArgumentByParamName(paramName).getExpr() = this.asExpr() and
55+
call.getArgument(arg).getExpr() = this.asExpr() and
5156
// match up `baseURLArg`
52-
call.getArgumentByParamName("baseURL").getExpr() = baseUrl
57+
call.getArgument(baseArg).getExpr() = baseUrl
5358
)
5459
}
5560

0 commit comments

Comments
 (0)