summaryrefslogtreecommitdiff
path: root/PermissionController/src/com/android/permissioncontroller/permission/service
diff options
context:
space:
mode:
authorKarishma Vakil <kvakil@google.com>2023-02-23 21:14:55 +0000
committerKarishma Vakil <kvakil@google.com>2023-03-02 01:46:27 +0000
commit23bca1991d940a23dafff27319eb4855840c9c10 (patch)
treef6ca4bbac3ca4127eb596836dfeb67ddb39eaf2a /PermissionController/src/com/android/permissioncontroller/permission/service
parente5ff09143f44b2b96eec5c461604d117d423218c (diff)
downloadPermission-23bca1991d940a23dafff27319eb4855840c9c10.tar.gz
[Safety Labels] Add guards for PackageNotFoundException when getting the
safety label and filter out non-location categories before writing to storage Bug: 263153093 Bug: 270456674 Test: atest CtsPermission3TestCases Change-Id: Iace4f8fffe39fc06724332e89a292938ea9fb24a
Diffstat (limited to 'PermissionController/src/com/android/permissioncontroller/permission/service')
-rw-r--r--PermissionController/src/com/android/permissioncontroller/permission/service/v34/SafetyLabelChangesJobService.kt13
1 files changed, 9 insertions, 4 deletions
diff --git a/PermissionController/src/com/android/permissioncontroller/permission/service/v34/SafetyLabelChangesJobService.kt b/PermissionController/src/com/android/permissioncontroller/permission/service/v34/SafetyLabelChangesJobService.kt
index c15741d56..37c4c00b5 100644
--- a/PermissionController/src/com/android/permissioncontroller/permission/service/v34/SafetyLabelChangesJobService.kt
+++ b/PermissionController/src/com/android/permissioncontroller/permission/service/v34/SafetyLabelChangesJobService.kt
@@ -30,6 +30,7 @@ import android.content.ComponentName
import android.content.Context
import android.content.Intent
import android.content.Intent.ACTION_BOOT_COMPLETED
+import android.content.pm.PackageManager
import android.os.Build
import android.os.Bundle
import android.os.PersistableBundle
@@ -264,8 +265,7 @@ class SafetyLabelChangesJobService : JobService() {
safetyLabelsLastUpdatedTimes: Map<AppInfo, Instant>
): Boolean {
val lightPackageInfo = LightPackageInfoLiveData[packageKey].getInitializedValue()
- val lastAppUpdateTime: Instant =
- Instant.ofEpochMilli(lightPackageInfo?.lastUpdateTime ?: 0)
+ val lastAppUpdateTime: Instant = Instant.ofEpochMilli(lightPackageInfo?.lastUpdateTime ?: 0)
val latestSafetyLabelUpdateTime: Instant? =
safetyLabelsLastUpdatedTimes[AppInfo(packageKey.first)]
return latestSafetyLabelUpdateTime != null &&
@@ -285,7 +285,12 @@ class SafetyLabelChangesJobService : JobService() {
context.createContextAsUser(user, 0)
}
val appMetadataBundle: PersistableBundle =
- userContext.packageManager.getAppMetadata(packageName)
+ try {
+ userContext.packageManager.getAppMetadata(packageName)
+ } catch (e: PackageManager.NameNotFoundException) {
+ Log.w(LOG_TAG, "Package $packageName not found while retrieving app metadata")
+ return null
+ }
val appMetadataSafetyLabel: AppMetadataSafetyLabel =
AppMetadataSafetyLabel.getSafetyLabelFromMetadata(appMetadataBundle) ?: return null
val lastUpdateTime =
@@ -293,7 +298,7 @@ class SafetyLabelChangesJobService : JobService() {
LightPackageInfoLiveData[packageKey].getInitializedValue()?.lastUpdateTime ?: 0)
val safetyLabelForPersistence: SafetyLabelForPersistence =
- AppsSafetyLabelHistory.SafetyLabel.fromAppMetadataSafetyLabel(
+ AppsSafetyLabelHistory.SafetyLabel.extractLocationSharingSafetyLabel(
packageName, lastUpdateTime, appMetadataSafetyLabel)
return safetyLabelForPersistence