From f7593344ddb9739df629783482aba81da984ffa0 Mon Sep 17 00:00:00 2001 From: Todd Kennedy Date: Fri, 8 Apr 2016 13:33:37 -0700 Subject: [PATCH] Don't allow userID changes on upgrade Changing userID's on upgrade lead to all sorts of bad behaviour, so, don't allow it. Bug: 28075981 Change-Id: I4861603f4607d7bd85fa24951a62a00dadd6eeec --- .../server/pm/PackageManagerService.java | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java index fbf4c0cb9cc0d..10ec6c96c56d0 100644 --- a/services/core/java/com/android/server/pm/PackageManagerService.java +++ b/services/core/java/com/android/server/pm/PackageManagerService.java @@ -13565,6 +13565,16 @@ public class PackageManagerService extends IPackageManager.Stub { } } + // Check for shared user id changes + String invalidPackageName = + getParentOrChildPackageChangedSharedUser(oldPackage, pkg); + if (invalidPackageName != null) { + res.setError(INSTALL_FAILED_SHARED_USER_INCOMPATIBLE, + "Package " + invalidPackageName + " tried to change user " + + oldPackage.mSharedUserId); + return; + } + // In case of rollback, remember per-user/profile install state allUsers = sUserManager.getUserIds(); @@ -13839,15 +13849,6 @@ public class PackageManagerService extends IPackageManager.Stub { setInstallAndUpdateTime(newPackage, deletedPkgSetting.firstInstallTime, System.currentTimeMillis()); - // Check for shared user id changes - String invalidPackageName = getParentOrChildPackageChangedSharedUser( - deletedPackage, newPackage); - if (invalidPackageName != null) { - res.setError(INSTALL_FAILED_SHARED_USER_INCOMPATIBLE, - "Forbidding shared user change from " + deletedPkgSetting.sharedUser - + " to " + invalidPackageName); - } - // Update the package dynamic state if succeeded if (res.returnCode == PackageManager.INSTALL_SUCCEEDED) { // Now that the install succeeded make sure we remove data