From 1df72db26f86cbfb3ff550346370a66c89a20081 Mon Sep 17 00:00:00 2001 From: Sudheer Shanka Date: Fri, 24 May 2019 10:59:52 -0700 Subject: [PATCH] Fix NPE when querying for already uninstalled package. It's possible that by the time StorageManagerService receives the opChanged() callback, the package whose appop was allowed/denied has already been uninstalled. Bug: 133442691 Test: manual Test: atest android.permission2.cts.RestrictedPermissionsTest Test: atest cts/hostsidetests/appsecurity/src/android/appsecurity/cts/ExternalStorageHostTest.java Change-Id: Ia032fe174c8796cafffba22036c2afe974c7dea8 --- .../core/java/com/android/server/StorageManagerService.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/services/core/java/com/android/server/StorageManagerService.java b/services/core/java/com/android/server/StorageManagerService.java index bf56bc03b1971..b07e9c02e5895 100644 --- a/services/core/java/com/android/server/StorageManagerService.java +++ b/services/core/java/com/android/server/StorageManagerService.java @@ -3597,6 +3597,10 @@ class StorageManagerService extends IStorageManager.Stub } final String[] packagesForUid = mIPackageManager.getPackagesForUid(uid); + if (ArrayUtils.isEmpty(packagesForUid)) { + // It's possible the package got uninstalled already, so just ignore. + return Zygote.MOUNT_EXTERNAL_NONE; + } if (packageName == null) { packageName = packagesForUid[0]; }