summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Michal Karpinski <mkarpinski@google.com> 2016-02-17 16:29:19 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2016-02-17 16:29:20 +0000
commitfbff8c1cbf7f9c2b0fa58e3a4f510d1983d602a7 (patch)
treee5c73de509702a8920ab3bbece75a683d1a593fb
parent6cb955826b752189002727cb1db62cfac64bc58a (diff)
parent7367ed84a5508b4190858191a975783744a76a1d (diff)
Merge "Whitelisting remote bugreport finished broadcast" into nyc-dev
-rw-r--r--services/core/java/com/android/server/am/ActivityManagerService.java14
1 files changed, 12 insertions, 2 deletions
diff --git a/services/core/java/com/android/server/am/ActivityManagerService.java b/services/core/java/com/android/server/am/ActivityManagerService.java
index ad16c177446d..ccaa1d2ecb22 100644
--- a/services/core/java/com/android/server/am/ActivityManagerService.java
+++ b/services/core/java/com/android/server/am/ActivityManagerService.java
@@ -499,6 +499,9 @@ public final class ActivityManagerService extends ActivityManagerNative
private static final int PERSISTENT_MASK =
ApplicationInfo.FLAG_SYSTEM|ApplicationInfo.FLAG_PERSISTENT;
+ // Intent sent when remote bugreport collection has been completed
+ private static final String INTENT_REMOTE_BUGREPORT_FINISHED =
+ "android.intent.action.REMOTE_BUGREPORT_FINISHED";
// Delay to disable app launch boost
static final int APP_BOOST_MESSAGE_DELAY = 3000;
@@ -16797,10 +16800,12 @@ public final class ActivityManagerService extends ActivityManagerNative
HashSet<ComponentName> singleUserReceivers = null;
boolean scannedFirstReceivers = false;
for (int user : users) {
- // Skip users that have Shell restrictions
+ // Skip users that have Shell restrictions, with exception of always permitted
+ // Shell broadcasts
if (callingUid == Process.SHELL_UID
&& mUserController.hasUserRestriction(
- UserManager.DISALLOW_DEBUGGING_FEATURES, user)) {
+ UserManager.DISALLOW_DEBUGGING_FEATURES, user)
+ && !isPermittedShellBroadcast(intent)) {
continue;
}
List<ResolveInfo> newReceivers = AppGlobals.getPackageManager()
@@ -16867,6 +16872,11 @@ public final class ActivityManagerService extends ActivityManagerNative
return receivers;
}
+ private boolean isPermittedShellBroadcast(Intent intent) {
+ // remote bugreport should always be allowed to be taken
+ return INTENT_REMOTE_BUGREPORT_FINISHED.equals(intent.getAction());
+ }
+
final int broadcastIntentLocked(ProcessRecord callerApp,
String callerPackage, Intent intent, String resolvedType,
IIntentReceiver resultTo, int resultCode, String resultData,