Skip to content

Commit 2b19cbc

Browse files
committed
Java: convert UnsafeContentUriResolution test to .qlref
1 parent 2869427 commit 2b19cbc

File tree

4 files changed

+78
-19
lines changed

4 files changed

+78
-19
lines changed

java/ql/test/query-tests/security/CWE-441/Test.java

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -29,23 +29,23 @@ private void validateWithBlockList(Uri uri) throws SecurityException {
2929
public void onCreate() {
3030
{
3131
ContentResolver contentResolver = getContentResolver();
32-
Uri uri = (Uri) getIntent().getParcelableExtra("URI_EXTRA");
33-
contentResolver.openInputStream(uri); // $ hasTaintFlow
34-
contentResolver.openOutputStream(uri); // $ hasTaintFlow
35-
contentResolver.openAssetFile(uri, null, null); // $ hasTaintFlow
36-
contentResolver.openAssetFileDescriptor(uri, null); // $ hasTaintFlow
37-
contentResolver.openFile(uri, null, null); // $ hasTaintFlow
38-
contentResolver.openFileDescriptor(uri, null); // $ hasTaintFlow
39-
contentResolver.openTypedAssetFile(uri, null, null, null); // $ hasTaintFlow
40-
contentResolver.openTypedAssetFileDescriptor(uri, null, null); // $ hasTaintFlow
32+
Uri uri = (Uri) getIntent().getParcelableExtra("URI_EXTRA"); // $ Source
33+
contentResolver.openInputStream(uri); // $ Alert
34+
contentResolver.openOutputStream(uri); // $ Alert
35+
contentResolver.openAssetFile(uri, null, null); // $ Alert
36+
contentResolver.openAssetFileDescriptor(uri, null); // $ Alert
37+
contentResolver.openFile(uri, null, null); // $ Alert
38+
contentResolver.openFileDescriptor(uri, null); // $ Alert
39+
contentResolver.openTypedAssetFile(uri, null, null, null); // $ Alert
40+
contentResolver.openTypedAssetFileDescriptor(uri, null, null); // $ Alert
4141
}
4242
{
4343
ContentResolver contentResolver = getContentResolver();
44-
Uri uri = (Uri) getIntent().getParcelableExtra("URI_EXTRA");
44+
Uri uri = (Uri) getIntent().getParcelableExtra("URI_EXTRA"); // $ Source
4545
String path = uri.getPath();
4646
if (path.startsWith("/data"))
4747
throw new SecurityException();
48-
contentResolver.openInputStream(uri); // $ hasTaintFlow
48+
contentResolver.openInputStream(uri); // $ Alert
4949
}
5050
// Equals checks
5151
{
@@ -64,11 +64,11 @@ public void onCreate() {
6464
// Allow list checks
6565
{
6666
ContentResolver contentResolver = getContentResolver();
67-
Uri uri = (Uri) getIntent().getParcelableExtra("URI_EXTRA");
67+
Uri uri = (Uri) getIntent().getParcelableExtra("URI_EXTRA"); // $ Source
6868
String path = uri.getPath();
6969
if (!path.startsWith("/safe/path"))
7070
throw new SecurityException();
71-
contentResolver.openInputStream(uri); // $ hasTaintFlow
71+
contentResolver.openInputStream(uri); // $ Alert
7272
}
7373
{
7474
ContentResolver contentResolver = getContentResolver();
@@ -89,11 +89,11 @@ public void onCreate() {
8989
// Block list checks
9090
{
9191
ContentResolver contentResolver = getContentResolver();
92-
Uri uri = (Uri) getIntent().getParcelableExtra("URI_EXTRA");
92+
Uri uri = (Uri) getIntent().getParcelableExtra("URI_EXTRA"); // $ Source
9393
String path = uri.getPath();
9494
if (path.startsWith("/data"))
9595
throw new SecurityException();
96-
contentResolver.openInputStream(uri); // $ hasTaintFlow
96+
contentResolver.openInputStream(uri); // $ Alert
9797
}
9898
{
9999
ContentResolver contentResolver = getContentResolver();
Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
#select
2+
| Test.java:33:45:33:47 | uri | Test.java:32:29:32:39 | getIntent(...) : Intent | Test.java:33:45:33:47 | uri | This ContentResolver method that resolves a URI depends on a $@. | Test.java:32:29:32:39 | getIntent(...) | user-provided value |
3+
| Test.java:34:46:34:48 | uri | Test.java:32:29:32:39 | getIntent(...) : Intent | Test.java:34:46:34:48 | uri | This ContentResolver method that resolves a URI depends on a $@. | Test.java:32:29:32:39 | getIntent(...) | user-provided value |
4+
| Test.java:35:43:35:45 | uri | Test.java:32:29:32:39 | getIntent(...) : Intent | Test.java:35:43:35:45 | uri | This ContentResolver method that resolves a URI depends on a $@. | Test.java:32:29:32:39 | getIntent(...) | user-provided value |
5+
| Test.java:36:53:36:55 | uri | Test.java:32:29:32:39 | getIntent(...) : Intent | Test.java:36:53:36:55 | uri | This ContentResolver method that resolves a URI depends on a $@. | Test.java:32:29:32:39 | getIntent(...) | user-provided value |
6+
| Test.java:37:38:37:40 | uri | Test.java:32:29:32:39 | getIntent(...) : Intent | Test.java:37:38:37:40 | uri | This ContentResolver method that resolves a URI depends on a $@. | Test.java:32:29:32:39 | getIntent(...) | user-provided value |
7+
| Test.java:38:48:38:50 | uri | Test.java:32:29:32:39 | getIntent(...) : Intent | Test.java:38:48:38:50 | uri | This ContentResolver method that resolves a URI depends on a $@. | Test.java:32:29:32:39 | getIntent(...) | user-provided value |
8+
| Test.java:39:48:39:50 | uri | Test.java:32:29:32:39 | getIntent(...) : Intent | Test.java:39:48:39:50 | uri | This ContentResolver method that resolves a URI depends on a $@. | Test.java:32:29:32:39 | getIntent(...) | user-provided value |
9+
| Test.java:40:58:40:60 | uri | Test.java:32:29:32:39 | getIntent(...) : Intent | Test.java:40:58:40:60 | uri | This ContentResolver method that resolves a URI depends on a $@. | Test.java:32:29:32:39 | getIntent(...) | user-provided value |
10+
| Test.java:48:45:48:47 | uri | Test.java:44:29:44:39 | getIntent(...) : Intent | Test.java:48:45:48:47 | uri | This ContentResolver method that resolves a URI depends on a $@. | Test.java:44:29:44:39 | getIntent(...) | user-provided value |
11+
| Test.java:71:45:71:47 | uri | Test.java:67:29:67:39 | getIntent(...) : Intent | Test.java:71:45:71:47 | uri | This ContentResolver method that resolves a URI depends on a $@. | Test.java:67:29:67:39 | getIntent(...) | user-provided value |
12+
| Test.java:96:45:96:47 | uri | Test.java:92:29:92:39 | getIntent(...) : Intent | Test.java:96:45:96:47 | uri | This ContentResolver method that resolves a URI depends on a $@. | Test.java:92:29:92:39 | getIntent(...) | user-provided value |
13+
edges
14+
| Test.java:32:23:32:71 | (...)... : Uri | Test.java:33:45:33:47 | uri | provenance | |
15+
| Test.java:32:23:32:71 | (...)... : Uri | Test.java:34:46:34:48 | uri | provenance | |
16+
| Test.java:32:23:32:71 | (...)... : Uri | Test.java:35:43:35:45 | uri | provenance | |
17+
| Test.java:32:23:32:71 | (...)... : Uri | Test.java:36:53:36:55 | uri | provenance | |
18+
| Test.java:32:23:32:71 | (...)... : Uri | Test.java:37:38:37:40 | uri | provenance | |
19+
| Test.java:32:23:32:71 | (...)... : Uri | Test.java:38:48:38:50 | uri | provenance | |
20+
| Test.java:32:23:32:71 | (...)... : Uri | Test.java:39:48:39:50 | uri | provenance | |
21+
| Test.java:32:23:32:71 | (...)... : Uri | Test.java:40:58:40:60 | uri | provenance | |
22+
| Test.java:32:29:32:39 | getIntent(...) : Intent | Test.java:32:29:32:71 | getParcelableExtra(...) : Parcelable | provenance | MaD:1 |
23+
| Test.java:32:29:32:71 | getParcelableExtra(...) : Parcelable | Test.java:32:23:32:71 | (...)... : Uri | provenance | |
24+
| Test.java:44:23:44:71 | (...)... : Uri | Test.java:48:45:48:47 | uri | provenance | |
25+
| Test.java:44:29:44:39 | getIntent(...) : Intent | Test.java:44:29:44:71 | getParcelableExtra(...) : Parcelable | provenance | MaD:1 |
26+
| Test.java:44:29:44:71 | getParcelableExtra(...) : Parcelable | Test.java:44:23:44:71 | (...)... : Uri | provenance | |
27+
| Test.java:67:23:67:71 | (...)... : Uri | Test.java:71:45:71:47 | uri | provenance | |
28+
| Test.java:67:29:67:39 | getIntent(...) : Intent | Test.java:67:29:67:71 | getParcelableExtra(...) : Parcelable | provenance | MaD:1 |
29+
| Test.java:67:29:67:71 | getParcelableExtra(...) : Parcelable | Test.java:67:23:67:71 | (...)... : Uri | provenance | |
30+
| Test.java:92:23:92:71 | (...)... : Uri | Test.java:96:45:96:47 | uri | provenance | |
31+
| Test.java:92:29:92:39 | getIntent(...) : Intent | Test.java:92:29:92:71 | getParcelableExtra(...) : Parcelable | provenance | MaD:1 |
32+
| Test.java:92:29:92:71 | getParcelableExtra(...) : Parcelable | Test.java:92:23:92:71 | (...)... : Uri | provenance | |
33+
models
34+
| 1 | Summary: android.content; Intent; true; getParcelableExtra; (String); ; Argument[this].SyntheticField[android.content.Intent.extras].MapValue; ReturnValue; value; manual |
35+
nodes
36+
| Test.java:32:23:32:71 | (...)... : Uri | semmle.label | (...)... : Uri |
37+
| Test.java:32:29:32:39 | getIntent(...) : Intent | semmle.label | getIntent(...) : Intent |
38+
| Test.java:32:29:32:71 | getParcelableExtra(...) : Parcelable | semmle.label | getParcelableExtra(...) : Parcelable |
39+
| Test.java:33:45:33:47 | uri | semmle.label | uri |
40+
| Test.java:34:46:34:48 | uri | semmle.label | uri |
41+
| Test.java:35:43:35:45 | uri | semmle.label | uri |
42+
| Test.java:36:53:36:55 | uri | semmle.label | uri |
43+
| Test.java:37:38:37:40 | uri | semmle.label | uri |
44+
| Test.java:38:48:38:50 | uri | semmle.label | uri |
45+
| Test.java:39:48:39:50 | uri | semmle.label | uri |
46+
| Test.java:40:58:40:60 | uri | semmle.label | uri |
47+
| Test.java:44:23:44:71 | (...)... : Uri | semmle.label | (...)... : Uri |
48+
| Test.java:44:29:44:39 | getIntent(...) : Intent | semmle.label | getIntent(...) : Intent |
49+
| Test.java:44:29:44:71 | getParcelableExtra(...) : Parcelable | semmle.label | getParcelableExtra(...) : Parcelable |
50+
| Test.java:48:45:48:47 | uri | semmle.label | uri |
51+
| Test.java:67:23:67:71 | (...)... : Uri | semmle.label | (...)... : Uri |
52+
| Test.java:67:29:67:39 | getIntent(...) : Intent | semmle.label | getIntent(...) : Intent |
53+
| Test.java:67:29:67:71 | getParcelableExtra(...) : Parcelable | semmle.label | getParcelableExtra(...) : Parcelable |
54+
| Test.java:71:45:71:47 | uri | semmle.label | uri |
55+
| Test.java:92:23:92:71 | (...)... : Uri | semmle.label | (...)... : Uri |
56+
| Test.java:92:29:92:39 | getIntent(...) : Intent | semmle.label | getIntent(...) : Intent |
57+
| Test.java:92:29:92:71 | getParcelableExtra(...) : Parcelable | semmle.label | getParcelableExtra(...) : Parcelable |
58+
| Test.java:96:45:96:47 | uri | semmle.label | uri |
59+
subpaths

java/ql/test/query-tests/security/CWE-441/UnsafeContentUriResolutionTest.ql

Lines changed: 0 additions & 4 deletions
This file was deleted.
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
query: Security/CWE/CWE-441/UnsafeContentUriResolution.ql
2+
postprocess:
3+
- utils/test/PrettyPrintModels.ql
4+
- utils/test/InlineExpectationsTestQuery.ql

0 commit comments

Comments
 (0)