From b74f796d11d2a6220e198eebbbf0944b2fd86d23 Mon Sep 17 00:00:00 2001 From: Edward Cunningham Date: Wed, 7 Apr 2021 17:00:45 +0000 Subject: Fix to allow self-updates without user action. Check if the *current* installer package (ie. the session owner) is allowed to install packages when deciding if user action is needed. We were mistakenly checking the *existing* installer package (ie. installer of record) instead, which prevented self-updates. Bug: 184741940 Test: Manual with local test app. Change-Id: Ie0aec7a34ead94788af462002d6dccf420f9f50b --- .../java/com/android/server/pm/PackageInstallerSession.java | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/services/core/java/com/android/server/pm/PackageInstallerSession.java b/services/core/java/com/android/server/pm/PackageInstallerSession.java index 4eafe5143c8f..a6d4ed932ad9 100644 --- a/services/core/java/com/android/server/pm/PackageInstallerSession.java +++ b/services/core/java/com/android/server/pm/PackageInstallerSession.java @@ -948,14 +948,14 @@ public class PackageInstallerSession extends IPackageInstallerSession.Stub { == PackageManager.PERMISSION_GRANTED); final int targetPackageUid = mPm.getPackageUid(packageName, 0, userId); final boolean isUpdate = targetPackageUid != -1; - final InstallSourceInfo installSourceInfo = isUpdate + final InstallSourceInfo existingInstallSourceInfo = isUpdate ? mPm.getInstallSourceInfo(packageName) : null; - final String installerPackageName = installSourceInfo != null - ? installSourceInfo.getInstallingPackageName() + final String existingInstallerPackageName = existingInstallSourceInfo != null + ? existingInstallSourceInfo.getInstallingPackageName() : null; final boolean isInstallerOfRecord = isUpdate - && Objects.equals(installerPackageName, getInstallerPackageName()); + && Objects.equals(existingInstallerPackageName, getInstallerPackageName()); final boolean isSelfUpdate = targetPackageUid == mInstallerUid; final boolean isPermissionGranted = isInstallPermissionGranted || (isUpdatePermissionGranted && isUpdate) @@ -972,7 +972,7 @@ public class PackageInstallerSession extends IPackageInstallerSession.Stub { return USER_ACTION_NOT_NEEDED; } - if (mPm.isInstallDisabledForPackage(installerPackageName, mInstallerUid, userId)) { + if (mPm.isInstallDisabledForPackage(getInstallerPackageName(), mInstallerUid, userId)) { // show the installer to account for device poslicy or unknown sources use cases return USER_ACTION_REQUIRED; } -- cgit v1.2.3-59-g8ed1b