summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Svetoslav Ganov <svetoslavganov@google.com> 2015-08-04 20:54:52 +0000
committer Android Git Automerger <android-git-automerger@android.com> 2015-08-04 20:54:52 +0000
commitb381d697310c14cef50e0e80bebd15a97b8e9c84 (patch)
treeb01305348d97adb57cc68dc5e691dfb41548a1bb
parent9aebdb4c39bd958f0a568539ea503b2da494802e (diff)
parent073bfb9bec7bc407c50a23a2317852cb0d69599b (diff)
am 073bfb9b: am ce68917c: Merge "Ensure per package and per UID state share same package settings." into mnc-dev
* commit '073bfb9bec7bc407c50a23a2317852cb0d69599b': Ensure per package and per UID state share same package settings.
-rw-r--r--services/core/java/com/android/server/pm/Settings.java15
1 files changed, 15 insertions, 0 deletions
diff --git a/services/core/java/com/android/server/pm/Settings.java b/services/core/java/com/android/server/pm/Settings.java
index 3c92a5212810..5bdad50ae0da 100644
--- a/services/core/java/com/android/server/pm/Settings.java
+++ b/services/core/java/com/android/server/pm/Settings.java
@@ -616,6 +616,7 @@ final class Settings {
p.sharedUser = origPackage.sharedUser;
p.appId = origPackage.appId;
p.origPackage = origPackage;
+ p.getPermissionsState().copyFrom(origPackage.getPermissionsState());
mRenamedPackages.put(name, origPackage.name);
name = origPackage.name;
// Update new package state.
@@ -815,6 +816,20 @@ final class Settings {
p.sharedUser = sharedUser;
p.appId = sharedUser.userId;
}
+
+ // If the we know about this user id, we have to update it as it
+ // has to point to the same PackageSetting instance as the package.
+ Object userIdPs = getUserIdLPr(p.appId);
+ if (sharedUser == null) {
+ if (userIdPs != null && userIdPs != p) {
+ replaceUserIdLPw(p.appId, p);
+ }
+ } else {
+ if (userIdPs != null && userIdPs != sharedUser) {
+ replaceUserIdLPw(p.appId, sharedUser);
+ }
+ }
+
IntentFilterVerificationInfo ivi = mRestoredIntentFilterVerifications.get(name);
if (ivi != null) {
if (DEBUG_DOMAIN_VERIFICATION) {