Skip to content

Commit ae461bc

Browse files
Switch to inline expectations tests
1 parent 4012866 commit ae461bc

File tree

4 files changed

+30
-48
lines changed

4 files changed

+30
-48
lines changed
Lines changed: 0 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -1,37 +0,0 @@
1-
edges
2-
| SensitiveBroadcast.java:12:34:12:38 | token : String | SensitiveBroadcast.java:14:31:14:36 | intent |
3-
| SensitiveBroadcast.java:13:41:13:52 | refreshToken : String | SensitiveBroadcast.java:14:31:14:36 | intent |
4-
| SensitiveBroadcast.java:25:32:25:39 | password : String | SensitiveBroadcast.java:26:31:26:36 | intent |
5-
| SensitiveBroadcast.java:36:35:36:39 | email : String | SensitiveBroadcast.java:38:31:38:36 | intent |
6-
| SensitiveBroadcast.java:50:9:50:16 | userinfo [post update] [<element>] : String | SensitiveBroadcast.java:52:31:52:36 | intent |
7-
| SensitiveBroadcast.java:50:22:50:29 | password : String | SensitiveBroadcast.java:50:9:50:16 | userinfo [post update] [<element>] : String |
8-
| SensitiveBroadcast.java:97:35:97:40 | ticket : String | SensitiveBroadcast.java:98:54:98:59 | intent |
9-
| SensitiveBroadcast.java:109:32:109:39 | passcode : String | SensitiveBroadcast.java:111:54:111:59 | intent |
10-
| SensitiveBroadcast.java:136:33:136:38 | passwd : String | SensitiveBroadcast.java:140:54:140:59 | intent |
11-
nodes
12-
| SensitiveBroadcast.java:12:34:12:38 | token : String | semmle.label | token : String |
13-
| SensitiveBroadcast.java:13:41:13:52 | refreshToken : String | semmle.label | refreshToken : String |
14-
| SensitiveBroadcast.java:14:31:14:36 | intent | semmle.label | intent |
15-
| SensitiveBroadcast.java:25:32:25:39 | password : String | semmle.label | password : String |
16-
| SensitiveBroadcast.java:26:31:26:36 | intent | semmle.label | intent |
17-
| SensitiveBroadcast.java:36:35:36:39 | email : String | semmle.label | email : String |
18-
| SensitiveBroadcast.java:38:31:38:36 | intent | semmle.label | intent |
19-
| SensitiveBroadcast.java:50:9:50:16 | userinfo [post update] [<element>] : String | semmle.label | userinfo [post update] [<element>] : String |
20-
| SensitiveBroadcast.java:50:22:50:29 | password : String | semmle.label | password : String |
21-
| SensitiveBroadcast.java:52:31:52:36 | intent | semmle.label | intent |
22-
| SensitiveBroadcast.java:97:35:97:40 | ticket : String | semmle.label | ticket : String |
23-
| SensitiveBroadcast.java:98:54:98:59 | intent | semmle.label | intent |
24-
| SensitiveBroadcast.java:109:32:109:39 | passcode : String | semmle.label | passcode : String |
25-
| SensitiveBroadcast.java:111:54:111:59 | intent | semmle.label | intent |
26-
| SensitiveBroadcast.java:136:33:136:38 | passwd : String | semmle.label | passwd : String |
27-
| SensitiveBroadcast.java:140:54:140:59 | intent | semmle.label | intent |
28-
subpaths
29-
#select
30-
| SensitiveBroadcast.java:14:31:14:36 | intent | SensitiveBroadcast.java:12:34:12:38 | token : String | SensitiveBroadcast.java:14:31:14:36 | intent | Sending $@ to broadcast. | SensitiveBroadcast.java:12:34:12:38 | token | sensitive information |
31-
| SensitiveBroadcast.java:14:31:14:36 | intent | SensitiveBroadcast.java:13:41:13:52 | refreshToken : String | SensitiveBroadcast.java:14:31:14:36 | intent | Sending $@ to broadcast. | SensitiveBroadcast.java:13:41:13:52 | refreshToken | sensitive information |
32-
| SensitiveBroadcast.java:26:31:26:36 | intent | SensitiveBroadcast.java:25:32:25:39 | password : String | SensitiveBroadcast.java:26:31:26:36 | intent | Sending $@ to broadcast. | SensitiveBroadcast.java:25:32:25:39 | password | sensitive information |
33-
| SensitiveBroadcast.java:38:31:38:36 | intent | SensitiveBroadcast.java:36:35:36:39 | email : String | SensitiveBroadcast.java:38:31:38:36 | intent | Sending $@ to broadcast. | SensitiveBroadcast.java:36:35:36:39 | email | sensitive information |
34-
| SensitiveBroadcast.java:52:31:52:36 | intent | SensitiveBroadcast.java:50:22:50:29 | password : String | SensitiveBroadcast.java:52:31:52:36 | intent | Sending $@ to broadcast. | SensitiveBroadcast.java:50:22:50:29 | password | sensitive information |
35-
| SensitiveBroadcast.java:98:54:98:59 | intent | SensitiveBroadcast.java:97:35:97:40 | ticket : String | SensitiveBroadcast.java:98:54:98:59 | intent | Sending $@ to broadcast. | SensitiveBroadcast.java:97:35:97:40 | ticket | sensitive information |
36-
| SensitiveBroadcast.java:111:54:111:59 | intent | SensitiveBroadcast.java:109:32:109:39 | passcode : String | SensitiveBroadcast.java:111:54:111:59 | intent | Sending $@ to broadcast. | SensitiveBroadcast.java:109:32:109:39 | passcode | sensitive information |
37-
| SensitiveBroadcast.java:140:54:140:59 | intent | SensitiveBroadcast.java:136:33:136:38 | passwd : String | SensitiveBroadcast.java:140:54:140:59 | intent | Sending $@ to broadcast. | SensitiveBroadcast.java:136:33:136:38 | passwd | sensitive information |

java/ql/test/query-tests/security/CWE-927/SensitiveBroadcast.java

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ public void sendBroadcast1(Context context, String token, String refreshToken) {
1111
intent.setAction("com.example.custom_action");
1212
intent.putExtra("token", token);
1313
intent.putExtra("refreshToken", refreshToken);
14-
context.sendBroadcast(intent);
14+
context.sendBroadcast(intent); // $ hasTaintFlow
1515
}
1616

1717
// BAD - Tests broadcast of sensitive user information with intent extra.
@@ -23,7 +23,7 @@ public void sendBroadcast2(Context context) {
2323
intent.setAction("com.example.custom_action");
2424
intent.putExtra("name", userName);
2525
intent.putExtra("pwd", password);
26-
context.sendBroadcast(intent);
26+
context.sendBroadcast(intent); // $ hasTaintFlow
2727
}
2828

2929
// BAD - Tests broadcast of email information with extra bundle.
@@ -35,7 +35,7 @@ public void sendBroadcast3(Context context) {
3535
Bundle bundle = new Bundle();
3636
bundle.putString("email", email);
3737
intent.putExtras(bundle);
38-
context.sendBroadcast(intent);
38+
context.sendBroadcast(intent); // $ hasTaintFlow
3939
}
4040

4141
// BAD - Tests broadcast of sensitive user information with null permission.
@@ -49,7 +49,7 @@ public void sendBroadcast4(Context context) {
4949
userinfo.add(username);
5050
userinfo.add(password);
5151
intent.putStringArrayListExtra("userinfo", userinfo);
52-
context.sendBroadcast(intent, null);
52+
context.sendBroadcast(intent, null); // $ hasTaintFlow
5353
}
5454

5555
// GOOD - Tests broadcast of sensitive user information with permission using string literal.
@@ -72,7 +72,7 @@ public void sendBroadcast6(Context context) {
7272
intent.setAction("com.example.custom_action");
7373
intent.putExtra("ticket", ticket);
7474
String perm = "com.example.user_permission";
75-
context.sendBroadcast(intent, perm);
75+
context.sendBroadcast(intent, perm); // $ hasTaintFlow
7676
}
7777

7878
// GOOD - Tests broadcast of sensitive user information to a specific application.
@@ -95,7 +95,7 @@ public void sendBroadcast8(Context context) {
9595
Intent intent = new Intent();
9696
intent.setAction("com.example.custom_action");
9797
intent.putExtra("ticket", ticket);
98-
context.sendBroadcastWithMultiplePermissions(intent, new String[]{});
98+
context.sendBroadcastWithMultiplePermissions(intent, new String[]{}); // $ hasTaintFlow
9999
}
100100

101101
// BAD - Tests broadcast of sensitive user information with multiple permissions using empty array initialization through a variable.
@@ -108,7 +108,7 @@ public void sendBroadcast9(Context context) {
108108
intent.putExtra("name", username);
109109
intent.putExtra("pwd", passcode);
110110
String[] perms = new String[0];
111-
context.sendBroadcastWithMultiplePermissions(intent, perms);
111+
context.sendBroadcastWithMultiplePermissions(intent, perms); // $ hasTaintFlow
112112
}
113113

114114
// GOOD - Tests broadcast of sensitive user information with multiple permissions.
@@ -133,11 +133,11 @@ public void sendBroadcast11(Context context) {
133133
intent.setAction("com.example.custom_action");
134134
Bundle bundle = new Bundle();
135135
bundle.putString("name", username);
136-
bundle.putString("pwd", passwd);
136+
bundle.putString("pwd", passwd);
137137
intent.putExtras(bundle);
138138
String[] perms = new String[0];
139139
String[] perms2 = perms;
140-
context.sendBroadcastWithMultiplePermissions(intent, perms2);
140+
context.sendBroadcastWithMultiplePermissions(intent, perms2); // $ hasTaintFlow
141141
}
142142

143143
/**
@@ -156,7 +156,7 @@ public void sendBroadcast12(Context context) {
156156
intent.getExtras().putString("pwd", password);
157157
String[] perms = new String[0];
158158
String[] perms2 = perms;
159-
context.sendBroadcastWithMultiplePermissions(intent, perms2);
159+
context.sendBroadcastWithMultiplePermissions(intent, perms2); // $ hasTaintFlow
160160
}
161161

162162
// GOOD - Tests broadcast of sensitive user information with ordered broadcast.
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
import java
2+
import semmle.code.java.security.AndroidSensitiveBroadcastQuery
3+
import TestUtilities.InlineExpectationsTest
4+
5+
class HasFlowTest extends InlineExpectationsTest {
6+
HasFlowTest() { this = "HasFlowTest" }
7+
8+
override string getARelevantTag() { result = "hasTaintFlow" }
9+
10+
override predicate hasActualResult(Location location, string element, string tag, string value) {
11+
tag = "hasTaintFlow" and
12+
exists(DataFlow::Node src, DataFlow::Node sink, SensitiveBroadcastConfig conf |
13+
conf.hasFlow(src, sink)
14+
|
15+
sink.getLocation() = location and
16+
element = sink.toString() and
17+
value = ""
18+
)
19+
}
20+
}

java/ql/test/query-tests/security/CWE-927/SensitiveBroadcast.qlref

Lines changed: 0 additions & 1 deletion
This file was deleted.

0 commit comments

Comments
 (0)