From 1d1b4893762c8daad2b31dc79cad2dbcc1b251d2 Mon Sep 17 00:00:00 2001 From: Kenny Root Date: Fri, 8 Apr 2011 14:25:24 -0700 Subject: [PATCH] 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 --- services/java/com/android/server/pm/Settings.java | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/services/java/com/android/server/pm/Settings.java b/services/java/com/android/server/pm/Settings.java index 11dde752272c5..16b55c3634a4b 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 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, "