diff options
author | Karishma Vakil <kvakil@google.com> | 2023-02-23 21:14:55 +0000 |
---|---|---|
committer | Karishma Vakil <kvakil@google.com> | 2023-03-02 01:46:27 +0000 |
commit | 23bca1991d940a23dafff27319eb4855840c9c10 (patch) | |
tree | f6ca4bbac3ca4127eb596836dfeb67ddb39eaf2a /PermissionController/src/com/android/permissioncontroller/permission/service | |
parent | e5ff09143f44b2b96eec5c461604d117d423218c (diff) | |
download | Permission-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.kt | 13 |
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 |