From d2cf3aec6087ba53dcbb55eb38c8e7f385ac4cbd Mon Sep 17 00:00:00 2001 From: Svetoslav Date: Thu, 2 Apr 2015 16:51:55 -0700 Subject: Do not clear a shared user's permissions on an app install. When regranting permissions for an app during an install if that app is in a shared user we should not clear the permissions as the permissions for the shared user are additive and go away when apps requesting them are uninstalled. bug:20050689 Change-Id: I82aa70669fc25a45e7020a1545b093db5525f5cf --- services/core/java/com/android/server/pm/PackageManagerService.java | 6 ++++-- services/core/java/com/android/server/pm/PackageSetting.java | 4 ++++ 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java index b9dfc2161f94..4752ace95716 100644 --- a/services/core/java/com/android/server/pm/PackageManagerService.java +++ b/services/core/java/com/android/server/pm/PackageManagerService.java @@ -7397,8 +7397,10 @@ public class PackageManagerService extends IPackageManager.Stub { if (replace) { ps.installPermissionsFixed = false; - origPermissions = new PermissionsState(permissionsState); - permissionsState.reset(); + if (!ps.isSharedUser()) { + origPermissions = new PermissionsState(permissionsState); + permissionsState.reset(); + } } permissionsState.setGlobalGids(mGlobalGids); diff --git a/services/core/java/com/android/server/pm/PackageSetting.java b/services/core/java/com/android/server/pm/PackageSetting.java index a3f4c0b545bf..e7c0ef765164 100644 --- a/services/core/java/com/android/server/pm/PackageSetting.java +++ b/services/core/java/com/android/server/pm/PackageSetting.java @@ -74,4 +74,8 @@ final class PackageSetting extends PackageSettingBase { public boolean isSystem() { return (pkgFlags & ApplicationInfo.FLAG_SYSTEM) != 0; } + + public boolean isSharedUser() { + return sharedUser != null; + } } -- cgit v1.2.3-59-g8ed1b