Add test cases; fix handling of recievers declared through xml

This commit is contained in:
Joe Farebrother
2022-04-22 16:41:01 +01:00
parent 87f26bf033
commit 4aed1a1e23
7 changed files with 80 additions and 3 deletions

View File

@@ -0,0 +1,9 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="test">
<application>
<receiver android:name=".BootReceiverXml">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
</intent-filter>
</receiver>
</application>
</manifest>

View File

@@ -0,0 +1,13 @@
package test;
import android.content.Intent;
import android.content.Context;
import android.content.BroadcastReceiver;
class BootReceiverXml extends BroadcastReceiver {
void doStuff(Intent intent) {}
@Override
public void onReceive(Context ctx, Intent intent) { // $hasResult
doStuff(intent);
}
}

View File

@@ -0,0 +1,18 @@
import java
import semmle.code.java.security.ImproperIntentVerificationQuery
import TestUtilities.InlineExpectationsTest
class HasFlowTest extends InlineExpectationsTest {
HasFlowTest() { this = "HasFlowTest" }
override string getARelevantTag() { result = "hasResult" }
override predicate hasActualResult(Location location, string element, string tag, string value) {
tag = "hasResult" and
exists(Method orm | unverifiedSystemReceiver(_, orm, _) |
orm.getLocation() = location and
element = orm.toString() and
value = ""
)
}
}

View File

@@ -0,0 +1,31 @@
package test;
import android.content.Intent;
import android.content.IntentFilter;
import android.content.Context;
import android.content.BroadcastReceiver;
class ImproperIntentVerificationTest {
static void doStuff(Intent intent) {}
class ShutdownBroadcastReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context ctx, Intent intent) { // $hasResult
doStuff(intent);
}
}
class ShutdownBroadcastReceiverSafe extends BroadcastReceiver {
@Override
public void onReceive(Context ctx, Intent intent) {
if (!intent.getAction().equals(Intent.ACTION_SHUTDOWN)) {
return;
}
doStuff(intent);
}
}
void test(Context c) {
c.registerReceiver(new ShutdownBroadcastReceiver(), new IntentFilter(Intent.ACTION_SHUTDOWN));
c.registerReceiver(new ShutdownBroadcastReceiverSafe(), new IntentFilter(Intent.ACTION_SHUTDOWN));
}
}

View File

@@ -0,0 +1 @@
// semmle-extractor-options: --javac-args -cp ${testdir}/../../../stubs/google-android-9.0.0