mirror of
https://github.com/github/codeql.git
synced 2026-05-06 14:15:17 +02:00
100 lines
2.5 KiB
Java
100 lines
2.5 KiB
Java
import android.app.Service;
|
|
import android.os.IBinder;
|
|
import android.content.Context;
|
|
import android.content.Intent;
|
|
|
|
public class TestStartServiceToIntent {
|
|
|
|
static Object source() {
|
|
return null;
|
|
}
|
|
|
|
static void sink(Object sink) {
|
|
}
|
|
|
|
public void test(Context ctx) {
|
|
{
|
|
Intent intent = new Intent(null, SomeService.class);
|
|
intent.putExtra("data", (String) source());
|
|
ctx.startService(intent);
|
|
}
|
|
|
|
{
|
|
Intent intent = new Intent(null, SafeService.class);
|
|
ctx.startService(intent);
|
|
}
|
|
}
|
|
|
|
static class SomeService extends Service {
|
|
|
|
@Override
|
|
public void onStart(Intent intent, int startId) {
|
|
sink(intent.getStringExtra("data")); // $ hasValueFlow
|
|
}
|
|
|
|
@Override
|
|
public int onStartCommand(Intent intent, int flags, int startId) {
|
|
sink(intent.getStringExtra("data")); // $ hasValueFlow
|
|
return -1;
|
|
}
|
|
|
|
@Override
|
|
public IBinder onBind(Intent intent) {
|
|
sink(intent.getStringExtra("data")); // $ hasValueFlow
|
|
return null;
|
|
}
|
|
|
|
@Override
|
|
public boolean onUnbind(Intent intent) {
|
|
sink(intent.getStringExtra("data")); // $ hasValueFlow
|
|
return false;
|
|
}
|
|
|
|
@Override
|
|
public void onRebind(Intent intent) {
|
|
sink(intent.getStringExtra("data")); // $ hasValueFlow
|
|
}
|
|
|
|
@Override
|
|
public void onTaskRemoved(Intent intent) {
|
|
sink(intent.getStringExtra("data")); // $ hasValueFlow
|
|
}
|
|
}
|
|
|
|
static class SafeService extends Service {
|
|
|
|
@Override
|
|
public void onStart(Intent intent, int startId) {
|
|
sink(intent.getStringExtra("data")); // Safe
|
|
}
|
|
|
|
@Override
|
|
public int onStartCommand(Intent intent, int flags, int startId) {
|
|
sink(intent.getStringExtra("data")); // Safe
|
|
return -1;
|
|
}
|
|
|
|
@Override
|
|
public IBinder onBind(Intent intent) {
|
|
sink(intent.getStringExtra("data")); // Safe
|
|
return null;
|
|
}
|
|
|
|
@Override
|
|
public boolean onUnbind(Intent intent) {
|
|
sink(intent.getStringExtra("data")); // Safe
|
|
return false;
|
|
}
|
|
|
|
@Override
|
|
public void onRebind(Intent intent) {
|
|
sink(intent.getStringExtra("data")); // Safe
|
|
}
|
|
|
|
@Override
|
|
public void onTaskRemoved(Intent intent) {
|
|
sink(intent.getStringExtra("data")); // Safe
|
|
}
|
|
}
|
|
}
|