summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Treehugger Robot <android-test-infra-autosubmit@system.gserviceaccount.com> 2024-01-25 21:42:19 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2024-01-25 21:42:19 +0000
commitba94cf12ea2c49c7077eeb8a12628905f53b5115 (patch)
tree6d0cd89020dd7a553ed04d850090fe031c014a25
parent6431d72462d4747c50c9074f14762bf0e5372ce3 (diff)
parent0680d68fc6c3ffff78c1ee09fa45393992a9b32d (diff)
Merge "Work around NPE in onPackageUninstalled()." into main
-rw-r--r--services/permission/java/com/android/server/permission/access/permission/DevicePermissionPolicy.kt7
1 files changed, 5 insertions, 2 deletions
diff --git a/services/permission/java/com/android/server/permission/access/permission/DevicePermissionPolicy.kt b/services/permission/java/com/android/server/permission/access/permission/DevicePermissionPolicy.kt
index 24d49523b9d1..3284cf19db43 100644
--- a/services/permission/java/com/android/server/permission/access/permission/DevicePermissionPolicy.kt
+++ b/services/permission/java/com/android/server/permission/access/permission/DevicePermissionPolicy.kt
@@ -129,7 +129,10 @@ class DevicePermissionPolicy : SchemePolicy() {
val packageState = newState.externalState.packageStates[packageName] ?: return
val androidPackage = packageState.androidPackage ?: return
val appId = packageState.appId
- val appIdPermissionFlags = newState.userStates[userId]!!.appIdDevicePermissionFlags
+ // The user may happen removed due to DeletePackageHelper.removeUnusedPackagesLPw() calling
+ // deletePackageX() asynchronously.
+ val userState = newState.userStates[userId] ?: return
+ val devicePermissionFlags = userState.appIdDevicePermissionFlags[appId] ?: return
androidPackage.requestedPermissions.forEach { permissionName ->
val isRequestedByOtherPackages =
anyPackageInAppId(appId) {
@@ -139,7 +142,7 @@ class DevicePermissionPolicy : SchemePolicy() {
if (isRequestedByOtherPackages) {
return@forEach
}
- appIdPermissionFlags[appId]?.forEachIndexed { _, deviceId, _ ->
+ devicePermissionFlags.forEachIndexed { _, deviceId, _ ->
setPermissionFlags(appId, deviceId, userId, permissionName, 0)
}
}