summaryrefslogtreecommitdiffstats
path: root/services
diff options
context:
space:
mode:
authorKenny Root <kroot@google.com>2011-04-08 14:25:24 -0700
committerKenny Root <kroot@google.com>2011-04-08 14:25:27 -0700
commit1d1b4893762c8daad2b31dc79cad2dbcc1b251d2 (patch)
treeff93d11699c033ee4539ab89b6819c77f8b280ff /services
parent955276656755bdc85518049305a8492b3f7f8b0a (diff)
downloadframeworks_base-1d1b4893762c8daad2b31dc79cad2dbcc1b251d2.zip
frameworks_base-1d1b4893762c8daad2b31dc79cad2dbcc1b251d2.tar.gz
frameworks_base-1d1b4893762c8daad2b31dc79cad2dbcc1b251d2.tar.bz2
Updated system packages retain shared user
If a system package was updated that used permissions provided by a package signed with a different signature, it wouldn't grant those permissions to the updated system app. This is because the sharedUser field was not set in the disabled system package. Therefore it was checking the disabled system package's individual user permission grants which were empty. This change populates the sharedUser field for disabled system packages after reading all the existing shared users from the saved settings database. Bug: 4245273 Change-Id: I57c58c4083bd59f45095c184d6ca5a302f79ff6e
Diffstat (limited to 'services')
-rw-r--r--services/java/com/android/server/pm/Settings.java13
1 files changed, 13 insertions, 0 deletions
diff --git a/services/java/com/android/server/pm/Settings.java b/services/java/com/android/server/pm/Settings.java
index 11dde75..16b55c3 100644
--- a/services/java/com/android/server/pm/Settings.java
+++ b/services/java/com/android/server/pm/Settings.java
@@ -1336,6 +1336,19 @@ final class Settings {
}
mPendingPackages.clear();
+ /*
+ * Make sure all the updated system packages have their shared users
+ * associated with them.
+ */
+ final Iterator<PackageSetting> disabledIt = mDisabledSysPackages.values().iterator();
+ while (disabledIt.hasNext()) {
+ final PackageSetting disabledPs = disabledIt.next();
+ final Object id = getUserIdLPr(disabledPs.userId);
+ if (id != null && id instanceof SharedUserSetting) {
+ disabledPs.sharedUser = (SharedUserSetting) id;
+ }
+ }
+
readStoppedLPw();
mReadMessages.append("Read completed successfully: " + mPackages.size() + " packages, "