Skip to content

Commit 36070b4

Browse files
author
rich cannings
committed
Fix verfication bypassed for adb installs
ADB installs appear as UserHandle.USER_ALL, and can only be performed by UserHandle.USER_OWNER, so use the package verifier for UserHandle.USER_OWNER. This returns a valid userId to call PackageManagerService.getPackageUid. Bug: 7293091 Change-Id: I7a5497cfe5fa2e7aa804345cf9f507ec26a0db21
1 parent 8215ddb commit 36070b4

File tree

1 file changed

+11
-1
lines changed

1 file changed

+11
-1
lines changed

services/java/com/android/server/pm/PackageManagerService.java

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6374,12 +6374,22 @@ public void handleStartCopy() throws RemoteException {
63746374
mArgs = args;
63756375

63766376
if (ret == PackageManager.INSTALL_SUCCEEDED) {
6377+
/*
6378+
* ADB installs appear as UserHandle.USER_ALL, and can only be performed by
6379+
* UserHandle.USER_OWNER, so use the package verifier for UserHandle.USER_OWNER.
6380+
*/
6381+
int userIdentifier = getUser().getIdentifier();
6382+
if (userIdentifier == UserHandle.USER_ALL
6383+
&& ((flags & PackageManager.INSTALL_FROM_ADB) != 0)) {
6384+
userIdentifier = UserHandle.USER_OWNER;
6385+
}
6386+
63776387
/*
63786388
* Determine if we have any installed package verifiers. If we
63796389
* do, then we'll defer to them to verify the packages.
63806390
*/
63816391
final int requiredUid = mRequiredVerifierPackage == null ? -1
6382-
: getPackageUid(mRequiredVerifierPackage, getUser().getIdentifier());
6392+
: getPackageUid(mRequiredVerifierPackage, userIdentifier);
63836393
if (requiredUid != -1 && isVerificationEnabled(flags)) {
63846394
final Intent verification = new Intent(
63856395
Intent.ACTION_PACKAGE_NEEDS_VERIFICATION);

0 commit comments

Comments
 (0)