diff options
| author | 2022-02-24 12:34:52 -0800 | |
|---|---|---|
| committer | 2022-02-24 14:32:40 -0800 | |
| commit | d4d930a4ac07bece7c38b8d1097249aee4597b8b (patch) | |
| tree | e190200d7fc03185bc85dff1b4d2cac94b8cac02 | |
| parent | 12dd1d6747c8d5e3b99f5b1821012b92db4dab98 (diff) | |
Block APK rejoining shared UID by dropping sharedUserMaxSdkVersion
Not only should the APK not change its sharedUserId declaration, it
shall also not be allowed to rejoin shared UID.
Test: atest SharedUserMigrationTest#testAppInstall
Bug: 221088088
Change-Id: I4b5d76179d9ed17d333f46b4dc4d7d12b470d130
| -rw-r--r-- | services/core/java/com/android/server/pm/InstallPackageHelper.java | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/services/core/java/com/android/server/pm/InstallPackageHelper.java b/services/core/java/com/android/server/pm/InstallPackageHelper.java index db0b0c58b046..54c201945be6 100644 --- a/services/core/java/com/android/server/pm/InstallPackageHelper.java +++ b/services/core/java/com/android/server/pm/InstallPackageHelper.java @@ -1607,6 +1607,13 @@ final class InstallPackageHelper { + oldSharedUid + " to " + newSharedUid); } + // APK should not re-join shared UID + if (oldPackage.isLeavingSharedUid() && !parsedPackage.isLeavingSharedUid()) { + throw new PrepareFailure(INSTALL_FAILED_UID_CHANGED, + "Package " + parsedPackage.getPackageName() + + " attempting to rejoin " + newSharedUid); + } + // In case of rollback, remember per-user/profile install state allUsers = mPm.mUserManager.getUserIds(); installedUsers = ps.queryInstalledUsers(allUsers, true); |