Skip to content

Commit b692617

Browse files
committed
Add a new test for
1 parent 1f1f85a commit b692617

File tree

3 files changed

+26
-7
lines changed

3 files changed

+26
-7
lines changed

java/ql/src/semmle/code/java/security/UnsafeAndroidAccess.qll

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -78,10 +78,7 @@ private class JavaScriptEnabledUrlResourceSink extends UrlResourceSink {
7878
private class CrossOriginAccessMethod extends Method {
7979
CrossOriginAccessMethod() {
8080
this.getDeclaringType() instanceof TypeWebSettings and
81-
(
82-
this.hasName("setAllowUniversalAccessFromFileURLs") or
83-
this.hasName("setAllowFileAccessFromFileURLs")
84-
)
81+
this.hasName(["setAllowUniversalAccessFromFileURLs", "setAllowFileAccessFromFileURLs"])
8582
}
8683
}
8784

java/ql/test/query-tests/security/CWE-749/app/UnsafeAndroidAccess.java

Lines changed: 22 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,14 +12,14 @@ public void onCreate(Bundle savedInstanceState) {
1212
super.onCreate(savedInstanceState);
1313
setContentView(R.layout.webview);
1414
testJavaScriptEnabledWebView();
15-
testCrossOriginEnabledWebView();
15+
testUniversalFileAccessEnabledWebView();
16+
testFileAccessEnabledWebView();
1617
testSafeWebView();
1718
}
1819

1920
private void testJavaScriptEnabledWebView() {
2021
WebView wv = (WebView) findViewById(R.id.my_webview);
2122
WebSettings webSettings = wv.getSettings();
22-
2323
webSettings.setJavaScriptEnabled(true);
2424

2525
wv.setWebViewClient(new WebViewClient() {
@@ -36,7 +36,7 @@ public boolean shouldOverrideUrlLoading(WebView view, String url) {
3636
wv.loadUrl("https://www.mycorp.com"); // Safe
3737
}
3838

39-
private void testCrossOriginEnabledWebView() {
39+
private void testUniversalFileAccessEnabledWebView() {
4040
WebView wv = (WebView) findViewById(R.id.my_webview);
4141
WebSettings webSettings = wv.getSettings();
4242
webSettings.setAllowUniversalAccessFromFileURLs(true);
@@ -55,6 +55,25 @@ public boolean shouldOverrideUrlLoading(WebView view, String url) {
5555
wv.loadUrl("https://www.mycorp.com"); // Safe
5656
}
5757

58+
private void testFileAccessEnabledWebView() {
59+
WebView wv = (WebView) findViewById(R.id.my_webview);
60+
WebSettings webSettings = wv.getSettings();
61+
webSettings.setAllowFileAccessFromFileURLs(true);
62+
63+
wv.setWebViewClient(new WebViewClient() {
64+
@Override
65+
public boolean shouldOverrideUrlLoading(WebView view, String url) {
66+
view.loadUrl(url);
67+
return true;
68+
}
69+
});
70+
71+
String thisUrl = getIntent().getStringExtra("url");
72+
wv.loadUrl(thisUrl); // $hasUnsafeAndroidAccess
73+
wv.loadUrl("https://www.mycorp.com/" + thisUrl); // Safe
74+
wv.loadUrl("https://www.mycorp.com"); // Safe
75+
}
76+
5877
private void testSafeWebView() {
5978
WebView wv = (WebView) findViewById(-1);
6079

java/ql/test/stubs/android/android/webkit/WebSettings.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,4 +28,7 @@ public void setJavaScriptEnabled(boolean b) {
2828

2929
public void setAllowUniversalAccessFromFileURLs(boolean b) {
3030
}
31+
32+
public void setAllowFileAccessFromFileURLs(boolean b) {
33+
}
3134
}

0 commit comments

Comments
 (0)