diff options
author | Alex Buynytskyy <alexbuy@google.com> | 2021-01-12 11:10:03 -0800 |
---|---|---|
committer | Alex Buynytskyy <alexbuy@google.com> | 2021-01-12 12:35:53 -0800 |
commit | 42d4ba418e97c6e34fba7b1053d69e92ec32b846 (patch) | |
tree | 51329c4aa638a50db0adaa57690c49310041b931 /services/incremental/IncrementalService.cpp | |
parent | daea39f8a21c1900f45e652df2fa10ffe3e3d5bf (diff) |
Require INTERACT_ACROSS_USERS to enable readlogs.
As requested by PWG.
Bug: 177330562
Fixes: 177330562
Test: atest PackageManagerShellCommandTest PackageManagerShellCommandIncrementalTest IncrementalServiceTest PackageManagerServiceTest
Change-Id: I1b03bc1c5b4c3cffaa0f97d864cc088782290bc2
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); } } |