From 84ba40de12dac4efa6b90197e910dcdf432009f5 Mon Sep 17 00:00:00 2001 From: John Wu Date: Thu, 14 Jul 2022 21:55:23 +0000 Subject: Ignore sharedUserId when package already left shared UID After a package has left shared UID, its non-shared UID state should be preserved after the next scan (e.g. reboot or an APK upgrade), or else the app would observe data loss. Bug: 235460457 Test: atest CtsSharedUserMigrationTestCases Change-Id: I692fe3ff59b43f2fc0ee53de0ce8a2f38cd29f02 --- services/core/java/com/android/server/pm/InstallPackageHelper.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/services/core/java/com/android/server/pm/InstallPackageHelper.java b/services/core/java/com/android/server/pm/InstallPackageHelper.java index e90a5db39d71..7da5f51bcbc2 100644 --- a/services/core/java/com/android/server/pm/InstallPackageHelper.java +++ b/services/core/java/com/android/server/pm/InstallPackageHelper.java @@ -3701,8 +3701,9 @@ final class InstallPackageHelper { parsedPackage.getPackageName()); boolean ignoreSharedUserId = false; - if (installedPkgSetting == null) { - // We can directly ignore sharedUserSetting for new installs + if (installedPkgSetting == null || !installedPkgSetting.hasSharedUser()) { + // Directly ignore sharedUserSetting for new installs, or if the app has + // already left shared UID ignoreSharedUserId = parsedPackage.isLeavingSharedUid(); } -- cgit v1.2.3-59-g8ed1b