summaryrefslogtreecommitdiffstats
path: root/services/java/com/android/server/am/BroadcastQueue.java
diff options
context:
space:
mode:
authorDianne Hackborn <hackbod@google.com>2013-03-25 17:49:36 -0700
committerPaul Kocialkowski <contact@paulk.fr>2015-08-25 18:12:59 +0200
commita6de323672a3d3e3e5510cf47a4cd1d61118ba98 (patch)
treea80dff589f3b34e77974aba91db02bbfcd079e27 /services/java/com/android/server/am/BroadcastQueue.java
parentbe640cae67b534624d6b45b71bb43f25f8f84226 (diff)
downloadframeworks_base-a6de323672a3d3e3e5510cf47a4cd1d61118ba98.zip
frameworks_base-a6de323672a3d3e3e5510cf47a4cd1d61118ba98.tar.gz
frameworks_base-a6de323672a3d3e3e5510cf47a4cd1d61118ba98.tar.bz2
Fix issue #8470131: Process thrash kills battery
Protect app widget broadcasts from abuse. In this case the app was sending an APPWIDGET_UPDATE broadcast without specifying a target, which (a) should not be allowed (you should not be able to send updates to other apps), and (b) resulted in every single potential app widget in the system being launched... which was about 75 of them. Change-Id: I9d48733610ce6d5a7c32e69a3e06b9f33bd79a34 Signed-off-by: Dianne Hackborn <hackbod@google.com> Tested-by: Moritz Bandemer <replicant@posteo.mx>
Diffstat (limited to 'services/java/com/android/server/am/BroadcastQueue.java')
-rw-r--r--services/java/com/android/server/am/BroadcastQueue.java4
1 files changed, 3 insertions, 1 deletions
diff --git a/services/java/com/android/server/am/BroadcastQueue.java b/services/java/com/android/server/am/BroadcastQueue.java
index fc4ecda..468fd17 100644
--- a/services/java/com/android/server/am/BroadcastQueue.java
+++ b/services/java/com/android/server/am/BroadcastQueue.java
@@ -29,7 +29,6 @@ import android.content.Intent;
import android.content.pm.ActivityInfo;
import android.content.pm.PackageManager;
import android.content.pm.ResolveInfo;
-import android.content.pm.ServiceInfo;
import android.os.Bundle;
import android.os.Handler;
import android.os.IBinder;
@@ -1071,6 +1070,9 @@ public class BroadcastQueue {
pw.print(" #"); pw.print(i); pw.print(": "); pw.println(r);
pw.print(" ");
pw.println(r.intent.toShortString(false, true, true, false));
+ if (r.targetComp != null && r.targetComp != r.intent.getComponent()) {
+ pw.print(" targetComp: "); pw.println(r.targetComp.toShortString());
+ }
Bundle bundle = r.intent.getExtras();
if (bundle != null) {
pw.print(" extras: "); pw.println(bundle.toString());