diff options
| author | 2016-02-17 16:29:19 +0000 | |
|---|---|---|
| committer | 2016-02-17 16:29:20 +0000 | |
| commit | fbff8c1cbf7f9c2b0fa58e3a4f510d1983d602a7 (patch) | |
| tree | e5c73de509702a8920ab3bbece75a683d1a593fb | |
| parent | 6cb955826b752189002727cb1db62cfac64bc58a (diff) | |
| parent | 7367ed84a5508b4190858191a975783744a76a1d (diff) | |
Merge "Whitelisting remote bugreport finished broadcast" into nyc-dev
| -rw-r--r-- | services/core/java/com/android/server/am/ActivityManagerService.java | 14 |
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, |