From 68f6715bb283de2aa1678ffa16f69fd897300d8d Mon Sep 17 00:00:00 2001 From: Todd Kennedy Date: Wed, 21 Oct 2015 13:09:10 -0700 Subject: Maintain shared user list on OTA When a package is removed during an OTA, we weren't removing it from the shared user list. This means anyone asking for the packages for a shared UID would continue to see the old package. Bug: 24906701 Change-Id: Ifb6d64195e6b8af7454e19591611af66a40cbd10 --- services/core/java/com/android/server/pm/Settings.java | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/services/core/java/com/android/server/pm/Settings.java b/services/core/java/com/android/server/pm/Settings.java index 943e649425c8..647c17bb5c6d 100644 --- a/services/core/java/com/android/server/pm/Settings.java +++ b/services/core/java/com/android/server/pm/Settings.java @@ -517,7 +517,18 @@ final class Settings { ArrayList removeStage = new ArrayList(); for (Map.Entry entry : mSharedUsers.entrySet()) { final SharedUserSetting sus = entry.getValue(); - if (sus == null || sus.packages.size() == 0) { + if (sus == null) { + removeStage.add(entry.getKey()); + continue; + } + // remove packages that are no longer installed + for (Iterator iter = sus.packages.iterator(); iter.hasNext();) { + PackageSetting ps = iter.next(); + if (mPackages.get(ps.name) == null) { + iter.remove(); + } + } + if (sus.packages.size() == 0) { removeStage.add(entry.getKey()); } } -- cgit v1.2.3-59-g8ed1b