diff options
| author | 2018-08-17 18:56:28 +0000 | |
|---|---|---|
| committer | 2018-08-17 18:56:28 +0000 | |
| commit | 5b78b0015e0ce0d16358409cae60eedf5ff7212f (patch) | |
| tree | 5b481a7593e8c02733710ad3e4dc12dad606548e | |
| parent | fc28b6b724325de5b7704a2ccf5713ebc321acb4 (diff) | |
| parent | a2405766db1ef38ed71ba4a84746bd8116e59661 (diff) | |
Merge "RESTRICT AUTOMERGE Relax security exception for backport" into oc-dev
| -rw-r--r-- | services/core/java/com/android/server/pm/PackageManagerService.java | 16 |
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, |