summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author John Wu <topjohnwu@google.com> 2022-02-24 12:34:52 -0800
committer John Wu <topjohnwu@google.com> 2022-02-24 14:32:40 -0800
commitd4d930a4ac07bece7c38b8d1097249aee4597b8b (patch)
treee190200d7fc03185bc85dff1b4d2cac94b8cac02
parent12dd1d6747c8d5e3b99f5b1821012b92db4dab98 (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.java7
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);