From a5a90954bc8bc7fdf83969c9121da87aab02d8c6 Mon Sep 17 00:00:00 2001 From: Hans-Christoph Steiner Date: Mon, 10 Oct 2016 20:13:41 +0200 Subject: [PATCH] fix lint UnsafeProtectedBroadcastReceiver Android won't protect us from other apps sending other Intents to these receivers, so at least check that the action string matches what its looking for. This is based on a lint recommendation. --- app/build.gradle | 2 +- .../org/fdroid/fdroid/receiver/StartupReceiver.java | 8 +++++++- .../fdroid/receiver/WifiStateChangeReceiver.java | 11 +++++++++-- 3 files changed, 17 insertions(+), 4 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 750c5313b..b99c16ec1 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -203,7 +203,7 @@ android { // to make CI fail on errors until this is fixed https://github.com/rtyley/spongycastle/issues/7 warning 'InvalidPackage' - error 'AppCompatMethod', 'NestedScrolling', 'StringFormatCount' + error 'AppCompatMethod', 'NestedScrolling', 'StringFormatCount', 'UnsafeProtectedBroadcastReceiver' } packagingOptions { diff --git a/app/src/main/java/org/fdroid/fdroid/receiver/StartupReceiver.java b/app/src/main/java/org/fdroid/fdroid/receiver/StartupReceiver.java index 126696d65..86b35b9f6 100644 --- a/app/src/main/java/org/fdroid/fdroid/receiver/StartupReceiver.java +++ b/app/src/main/java/org/fdroid/fdroid/receiver/StartupReceiver.java @@ -23,12 +23,18 @@ import android.content.Context; import android.content.Intent; import org.fdroid.fdroid.UpdateService; +import org.fdroid.fdroid.Utils; public class StartupReceiver extends BroadcastReceiver { + private static final String TAG = "StartupReceiver"; @Override public void onReceive(Context ctx, Intent intent) { - UpdateService.schedule(ctx); + if (Intent.ACTION_BOOT_COMPLETED.equals(intent.getAction())) { + UpdateService.schedule(ctx); + } else { + Utils.debugLog(TAG, "received unsupported Intent " + intent); + } } } diff --git a/app/src/main/java/org/fdroid/fdroid/receiver/WifiStateChangeReceiver.java b/app/src/main/java/org/fdroid/fdroid/receiver/WifiStateChangeReceiver.java index 67dfe38d8..8521d1cad 100644 --- a/app/src/main/java/org/fdroid/fdroid/receiver/WifiStateChangeReceiver.java +++ b/app/src/main/java/org/fdroid/fdroid/receiver/WifiStateChangeReceiver.java @@ -4,14 +4,21 @@ import android.content.BroadcastReceiver; import android.content.ComponentName; import android.content.Context; import android.content.Intent; +import android.net.wifi.WifiManager; +import org.fdroid.fdroid.Utils; import org.fdroid.fdroid.net.WifiStateChangeService; public class WifiStateChangeReceiver extends BroadcastReceiver { + private static final String TAG = "WifiStateChangeReceiver"; @Override public void onReceive(Context context, Intent intent) { - intent.setComponent(new ComponentName(context, WifiStateChangeService.class)); - context.startService(intent); + if (WifiManager.NETWORK_STATE_CHANGED_ACTION.equals(intent.getAction())) { + intent.setComponent(new ComponentName(context, WifiStateChangeService.class)); + context.startService(intent); + } else { + Utils.debugLog(TAG, "received unsupported Intent: " + intent); + } } }