From 5a1a33a9a61fbe4005f906a91123bf930fdace0c Mon Sep 17 00:00:00 2001
From: Hans-Christoph Steiner <hans@eds.org>
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);
+        }
     }
 }