summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author TreeHugger Robot <treehugger-gerrit@google.com> 2018-08-17 18:56:28 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2018-08-17 18:56:28 +0000
commit5b78b0015e0ce0d16358409cae60eedf5ff7212f (patch)
tree5b481a7593e8c02733710ad3e4dc12dad606548e
parentfc28b6b724325de5b7704a2ccf5713ebc321acb4 (diff)
parenta2405766db1ef38ed71ba4a84746bd8116e59661 (diff)
Merge "RESTRICT AUTOMERGE Relax security exception for backport" into oc-dev
-rw-r--r--services/core/java/com/android/server/pm/PackageManagerService.java16
1 files changed, 13 insertions, 3 deletions
diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java
index fcd7f465baf0..43f70198d96b 100644
--- a/services/core/java/com/android/server/pm/PackageManagerService.java
+++ b/services/core/java/com/android/server/pm/PackageManagerService.java
@@ -4477,9 +4477,19 @@ public class PackageManagerService extends IPackageManager.Stub
if ((flags & PackageManager.MATCH_ANY_USER) != 0) {
// require the permission to be held; the calling uid and given user id referring
// to the same user is not sufficient
- enforceCrossUserPermission(Binder.getCallingUid(), userId, false, false, true,
- "MATCH_ANY_USER flag requires INTERACT_ACROSS_USERS permission at "
- + Debug.getCallers(5));
+ try {
+ enforceCrossUserPermission(Binder.getCallingUid(), userId, false, false, true,
+ "MATCH_ANY_USER flag requires INTERACT_ACROSS_USERS permission at "
+ + Debug.getCallers(5));
+ } catch (SecurityException se) {
+ // For compatibility reasons, we can't throw a security exception here if we're
+ // looking for applications in our own user id. Instead, unset the MATCH_ANY_USER
+ // flag and move on.
+ if (userId != UserHandle.getCallingUserId()) {
+ throw se;
+ }
+ flags &= ~PackageManager.MATCH_ANY_USER;
+ }
} else if ((flags & PackageManager.MATCH_UNINSTALLED_PACKAGES) != 0 && isCallerSystemUser
&& sUserManager.hasManagedProfile(UserHandle.USER_SYSTEM)) {
// If the caller wants all packages and has a restricted profile associated with it,