diff options
Diffstat (limited to 'services/incremental/IncrementalService.cpp')
-rw-r--r-- | services/incremental/IncrementalService.cpp | 19 |
1 files changed, 16 insertions, 3 deletions
diff --git a/services/incremental/IncrementalService.cpp b/services/incremental/IncrementalService.cpp index 45c9ad9b344b..dde70caa797f 100644 --- a/services/incremental/IncrementalService.cpp +++ b/services/incremental/IncrementalService.cpp @@ -38,9 +38,11 @@ using namespace std::literals; -constexpr const char* kDataUsageStats = "android.permission.LOADER_USAGE_STATS"; +constexpr const char* kLoaderUsageStats = "android.permission.LOADER_USAGE_STATS"; constexpr const char* kOpUsage = "android:loader_usage_stats"; +constexpr const char* kInteractAcrossUsers = "android.permission.INTERACT_ACROSS_USERS"; + namespace android::incremental { using content::pm::DataLoaderParamsParcel; @@ -684,10 +686,21 @@ int IncrementalService::setStorageParams(StorageId storageId, bool enableReadLog return -EPERM; } - if (auto status = mAppOpsManager->checkPermission(kDataUsageStats, kOpUsage, + // Check loader usage stats permission and apop. + if (auto status = mAppOpsManager->checkPermission(kLoaderUsageStats, kOpUsage, + params.packageName.c_str()); + !status.isOk()) { + LOG(ERROR) << " Permission: " << kLoaderUsageStats + << " check failed: " << status.toString8(); + return fromBinderStatus(status); + } + + // Check multiuser permission. + if (auto status = mAppOpsManager->checkPermission(kInteractAcrossUsers, nullptr, params.packageName.c_str()); !status.isOk()) { - LOG(ERROR) << "checkPermission failed: " << status.toString8(); + LOG(ERROR) << " Permission: " << kInteractAcrossUsers + << " check failed: " << status.toString8(); return fromBinderStatus(status); } } |