diff options
| author | 2015-04-02 16:51:55 -0700 | |
|---|---|---|
| committer | 2015-04-02 16:52:00 -0700 | |
| commit | d2cf3aec6087ba53dcbb55eb38c8e7f385ac4cbd (patch) | |
| 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
| -rw-r--r-- | services/core/java/com/android/server/pm/PackageManagerService.java | 6 | ||||
| -rw-r--r-- | 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; + } } |