Skip to content

Commit 0a135a7

Browse files
Jami Cogswellatorralba
authored andcommitted
resolve merge conflict
1 parent 0f64361 commit 0a135a7

File tree

5 files changed

+275
-60
lines changed

5 files changed

+275
-60
lines changed

java/ql/test/library-tests/frameworks/android/intent/TestStartActivityToGetIntent.java

Lines changed: 51 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,24 +2,68 @@
22
import android.content.Context;
33
import android.content.Intent;
44

5+
// ! Original - saving for reference
6+
// public class TestStartActivityToGetIntent {
7+
8+
// static Object source() {
9+
// return null;
10+
// }
11+
12+
// static void sink(Object sink) {
13+
// }
14+
15+
// public void test(Context ctx) {
16+
// Intent intent = new Intent(null, SomeActivity.class);
17+
// intent.putExtra("data", (String) source());
18+
// ctx.startActivity(intent);
19+
// }
20+
21+
// static class SomeActivity extends Activity {
22+
23+
// public void test() {
24+
// sink(getIntent().getStringExtra("data")); // $ hasValueFlow
25+
// }
26+
// }
27+
// }
28+
529
public class TestStartActivityToGetIntent {
630

7-
static Object source() {
31+
static Object source(String kind) {
832
return null;
933
}
1034

11-
static void sink(Object sink) {}
35+
static void sink(Object sink) {
36+
}
1237

13-
public void test(Context ctx) {
14-
Intent intent = new Intent(null, SomeActivity.class);
15-
intent.putExtra("data", (String) source());
16-
ctx.startActivity(intent);
38+
public void test(Context ctx, Activity act) {
39+
{
40+
Intent intentCtx = new Intent(null, SomeActivity.class);
41+
Intent intentAct = new Intent(null, SomeActivity.class);
42+
intentCtx.putExtra("data", (String) source("context"));
43+
intentAct.putExtra("data", (String) source("activity"));
44+
ctx.startActivity(intentCtx);
45+
act.startActivity(intentAct);
46+
}
47+
48+
{
49+
Intent intentCtx = new Intent(null, SafeActivity.class);
50+
Intent intentAct = new Intent(null, SafeActivity.class);
51+
ctx.startActivity(intentCtx);
52+
act.startActivity(intentAct);
53+
}
1754
}
1855

1956
static class SomeActivity extends Activity {
2057

2158
public void test() {
22-
sink(getIntent().getStringExtra("data")); // $ hasValueFlow
59+
sink(getIntent().getStringExtra("data")); // $ hasValueFlow=context hasValueFlow=activity
60+
}
61+
}
62+
63+
static class SafeActivity extends Activity {
64+
65+
public void test() {
66+
sink(getIntent().getStringExtra("data")); // Safe
2367
}
2468
}
2569
}
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
import android.content.BroadcastReceiver;
2+
import android.content.Context;
3+
import android.content.Intent;
4+
5+
public class TestStartBroadcastReceiverToIntent {
6+
7+
static Object source() {
8+
return null;
9+
}
10+
11+
static void sink(Object sink) {
12+
}
13+
14+
public void test(Context ctx) {
15+
{
16+
Intent intent = new Intent(null, SomeBroadcastReceiver.class);
17+
intent.putExtra("data", (String) source());
18+
ctx.sendBroadcast(intent);
19+
}
20+
21+
{
22+
Intent intent = new Intent(null, SafeBroadcastReceiver.class);
23+
ctx.sendBroadcast(intent);
24+
}
25+
}
26+
27+
static class SomeBroadcastReceiver extends BroadcastReceiver {
28+
29+
@Override
30+
public void onReceive(Context context, Intent intent) {
31+
sink(intent.getStringExtra("data")); // $ hasValueFlow
32+
}
33+
}
34+
35+
static class SafeBroadcastReceiver extends BroadcastReceiver {
36+
37+
@Override
38+
public void onReceive(Context context, Intent intent) {
39+
sink(intent.getStringExtra("data")); // Safe
40+
}
41+
}
42+
}

java/ql/test/library-tests/frameworks/android/intent/TestStartComponentToIntent.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import android.app.Activity;
2-
import android.app.Service;
3-
import android.content.BroadcastReceiver;
2+
//import android.app.Service;
3+
//import android.content.BroadcastReceiver;
44
import android.content.Context;
55
import android.content.Intent;
66

Lines changed: 99 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,99 @@
1+
import android.app.Service;
2+
import android.os.IBinder;
3+
import android.content.Context;
4+
import android.content.Intent;
5+
6+
public class TestStartServiceToIntent {
7+
8+
static Object source() {
9+
return null;
10+
}
11+
12+
static void sink(Object sink) {
13+
}
14+
15+
public void test(Context ctx) {
16+
{
17+
Intent intent = new Intent(null, SomeService.class);
18+
intent.putExtra("data", (String) source());
19+
ctx.startService(intent);
20+
}
21+
22+
{
23+
Intent intent = new Intent(null, SafeService.class);
24+
ctx.startService(intent);
25+
}
26+
}
27+
28+
static class SomeService extends Service {
29+
30+
@Override
31+
public void onStart(Intent intent, int startId) {
32+
sink(intent.getStringExtra("data")); // $ hasValueFlow
33+
}
34+
35+
@Override
36+
public int onStartCommand(Intent intent, int flags, int startId) {
37+
sink(intent.getStringExtra("data")); // $ hasValueFlow
38+
return -1;
39+
}
40+
41+
@Override
42+
public IBinder onBind(Intent intent) {
43+
sink(intent.getStringExtra("data")); // $ hasValueFlow
44+
return null;
45+
}
46+
47+
@Override
48+
public boolean onUnbind(Intent intent) {
49+
sink(intent.getStringExtra("data")); // $ hasValueFlow
50+
return false;
51+
}
52+
53+
@Override
54+
public void onRebind(Intent intent) {
55+
sink(intent.getStringExtra("data")); // $ hasValueFlow
56+
}
57+
58+
@Override
59+
public void onTaskRemoved(Intent intent) {
60+
sink(intent.getStringExtra("data")); // $ hasValueFlow
61+
}
62+
}
63+
64+
static class SafeService extends Service {
65+
66+
@Override
67+
public void onStart(Intent intent, int startId) {
68+
sink(intent.getStringExtra("data")); // Safe
69+
}
70+
71+
@Override
72+
public int onStartCommand(Intent intent, int flags, int startId) {
73+
sink(intent.getStringExtra("data")); // Safe
74+
return -1;
75+
}
76+
77+
@Override
78+
public IBinder onBind(Intent intent) {
79+
sink(intent.getStringExtra("data")); // Safe
80+
return null;
81+
}
82+
83+
@Override
84+
public boolean onUnbind(Intent intent) {
85+
sink(intent.getStringExtra("data")); // Safe
86+
return false;
87+
}
88+
89+
@Override
90+
public void onRebind(Intent intent) {
91+
sink(intent.getStringExtra("data")); // Safe
92+
}
93+
94+
@Override
95+
public void onTaskRemoved(Intent intent) {
96+
sink(intent.getStringExtra("data")); // Safe
97+
}
98+
}
99+
}

0 commit comments

Comments
 (0)