commit | d2cf3aec6087ba53dcbb55eb38c8e7f385ac4cbd | [log] [tgz] |
---|---|---|
author | Svetoslav <svetoslavganov@google.com> | Thu Apr 02 16:51:55 2015 -0700 |
committer | Svetoslav <svetoslavganov@google.com> | Thu Apr 02 16:52:00 2015 -0700 |
tree | d0d493fe16c9047437159436b95b9cf1fb370b98 | |
parent | 84bf582208142616547a1b0f6b6a01fa3439b098 [diff] |
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
diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java index b9dfc21..4752ace 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 @@ 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 a3f4c0b..e7c0ef7 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 @@ public boolean isSystem() { return (pkgFlags & ApplicationInfo.FLAG_SYSTEM) != 0; } + + public boolean isSharedUser() { + return sharedUser != null; + } }