diff options
| author | Kenny Root <kroot@google.com> | 2013-04-01 15:59:59 -0700 |
|---|---|---|
| committer | Kenny Root <kroot@google.com> | 2013-04-03 11:32:52 -0700 |
| commit | d72317abd79ddf95d48c8f35bf1070900ff55b5e (patch) | |
| tree | d07ab26ca8e840bd98811223315bc2ad773e0418 /services/java/com/android/server/pm/PackageManagerService.java | |
| parent | 688c33448572fa3879b1486d8fa1bf16cd946211 (diff) | |
Remove keystore entries when package removed
Add a hook into PackageManagerService so that when app IDs are
completely removed, we erase all entries from keystore for those UIDs
that have gone away.
(cherry picked from commit 95e3ee3971915b323e5c13dcfe3b12a4180850cd)
Bug: 3020069
Change-Id: I374258ccc103f8cb3e238f2bf0d1afda0659db94
Diffstat (limited to 'services/java/com/android/server/pm/PackageManagerService.java')
| -rw-r--r-- | services/java/com/android/server/pm/PackageManagerService.java | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/services/java/com/android/server/pm/PackageManagerService.java b/services/java/com/android/server/pm/PackageManagerService.java index ae9260a10324..a3ab431d1479 100644 --- a/services/java/com/android/server/pm/PackageManagerService.java +++ b/services/java/com/android/server/pm/PackageManagerService.java @@ -110,8 +110,10 @@ import android.os.ServiceManager; import android.os.SystemClock; import android.os.SystemProperties; import android.os.UserHandle; -import android.os.UserManager; import android.os.Environment.UserEnvironment; +import android.os.UserManager; +import android.provider.Settings.Secure; +import android.security.KeyStore; import android.security.SystemKeyStore; import android.util.DisplayMetrics; import android.util.EventLog; @@ -8634,6 +8636,17 @@ public class PackageManagerService extends IPackageManager.Stub { mSettings.writeLPr(); } } + // A user ID was deleted here. Go through all users and remove it from + // KeyStore. + final int appId = outInfo.removedAppId; + if (appId != -1) { + final KeyStore keyStore = KeyStore.getInstance(); + if (keyStore != null) { + for (final int userId : sUserManager.getUserIds()) { + keyStore.clearUid(UserHandle.getUid(userId, appId)); + } + } + } } /* |
