diff options
| author | 2024-01-25 21:42:19 +0000 | |
|---|---|---|
| committer | 2024-01-25 21:42:19 +0000 | |
| commit | ba94cf12ea2c49c7077eeb8a12628905f53b5115 (patch) | |
| tree | 6d0cd89020dd7a553ed04d850090fe031c014a25 | |
| parent | 6431d72462d4747c50c9074f14762bf0e5372ce3 (diff) | |
| parent | 0680d68fc6c3ffff78c1ee09fa45393992a9b32d (diff) | |
Merge "Work around NPE in onPackageUninstalled()." into main
| -rw-r--r-- | services/permission/java/com/android/server/permission/access/permission/DevicePermissionPolicy.kt | 7 |
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) } } |