From 30611ae54dd9720800074e9e3671e9def437d41d Mon Sep 17 00:00:00 2001 From: Jackal Guo Date: Tue, 15 Jun 2021 13:01:25 +0800 Subject: [PATCH] Revise the IllegalArgumentException check Combining the two IllegalArgumentException check in getKeySetByAlias to mitigate the potential information leakage. Bug: 189858116 Test: atest PackageManagerTests Test: manually using the PoC in the buganizer to ensure the symptom no longer exists. Change-Id: Id407900e156555db1ec6b87cbcd233a9976f242e --- .../com/android/server/pm/PackageManagerService.java | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java index a8cc5fdf884d5..e8a9086658d0b 100644 --- a/services/core/java/com/android/server/pm/PackageManagerService.java +++ b/services/core/java/com/android/server/pm/PackageManagerService.java @@ -26421,16 +26421,12 @@ public class PackageManagerService extends IPackageManager.Stub } synchronized(mLock) { final AndroidPackage pkg = mPackages.get(packageName); - if (pkg == null) { + if (pkg == null + || shouldFilterApplicationLocked(getPackageSetting(pkg.getPackageName()), + Binder.getCallingUid(), UserHandle.getCallingUserId())) { Slog.w(TAG, "KeySet requested for unknown package: " + packageName); throw new IllegalArgumentException("Unknown package: " + packageName); } - final PackageSetting ps = getPackageSetting(pkg.getPackageName()); - if (shouldFilterApplicationLocked( - ps, Binder.getCallingUid(), UserHandle.getCallingUserId())) { - Slog.w(TAG, "KeySet requested for filtered package: " + packageName); - throw new IllegalArgumentException("Unknown package: " + packageName); - } final KeySetManagerService ksms = mSettings.getKeySetManagerService(); return new KeySet(ksms.getKeySetByAliasAndPackageNameLPr(packageName, alias)); }