From 633f19983182fbcf9479f6d5dd9f5e29e37f4cd0 Mon Sep 17 00:00:00 2001 From: Todd Kennedy Date: Thu, 16 Jul 2015 09:44:31 -0700 Subject: [PATCH] Verfiy global apps with device owner Applications installed for a specific user must be verfied as that user. However, apps that are installed globally [i.e. UserHandle.ALL] should not be verified by every user on the device. Instead, they should be verified by the device owner. Bug: 21901423 Change-Id: I5fd3f690d08e7e911a3c86f09bbfcd4eb635b418 --- .../com/android/server/pm/PackageManagerService.java | 11 ++++++++--- 1 file changed, 8 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 4b2c1ff60622b..7cc857fca5427 100644 --- a/services/core/java/com/android/server/pm/PackageManagerService.java +++ b/services/core/java/com/android/server/pm/PackageManagerService.java @@ -10621,6 +10621,12 @@ public class PackageManagerService extends IPackageManager.Stub { final List sufficientVerifiers = matchVerifiers(pkgLite, receivers, verificationState); + // Apps installed for "all" users use the device owner to verify the app + UserHandle verifierUser = getUser(); + if (verifierUser == UserHandle.ALL) { + verifierUser = UserHandle.OWNER; + } + /* * If any sufficient verifiers were listed in the package * manifest, attempt to ask them. @@ -10636,8 +10642,7 @@ public class PackageManagerService extends IPackageManager.Stub { final Intent sufficientIntent = new Intent(verification); sufficientIntent.setComponent(verifierComponent); - - mContext.sendBroadcastAsUser(sufficientIntent, getUser()); + mContext.sendBroadcastAsUser(sufficientIntent, verifierUser); } } } @@ -10652,7 +10657,7 @@ public class PackageManagerService extends IPackageManager.Stub { * target BroadcastReceivers have run. */ verification.setComponent(requiredVerifierComponent); - mContext.sendOrderedBroadcastAsUser(verification, getUser(), + mContext.sendOrderedBroadcastAsUser(verification, verifierUser, android.Manifest.permission.PACKAGE_VERIFICATION_AGENT, new BroadcastReceiver() { @Override