diff options
author | Kenny Root <kroot@google.com> | 2011-04-08 14:25:24 -0700 |
---|---|---|
committer | Kenny Root <kroot@google.com> | 2011-04-08 14:25:27 -0700 |
commit | 1d1b4893762c8daad2b31dc79cad2dbcc1b251d2 (patch) | |
tree | ff93d11699c033ee4539ab89b6819c77f8b280ff /services/java/com/android/server/pm | |
parent | 955276656755bdc85518049305a8492b3f7f8b0a (diff) | |
download | frameworks_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/java/com/android/server/pm')
-rw-r--r-- | services/java/com/android/server/pm/Settings.java | 13 |
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, " |