summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Xin Guan <guanxin@google.com> 2023-12-12 19:41:49 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2023-12-12 19:41:49 +0000
commite509b838464680f01ca9170c41efd24a7ecb72c1 (patch)
tree20285aef85a932e4d39f0ad9568d843a5c6f2ce3
parentb44dd499aa68cdfbfd5c102ed6778121d8b6d329 (diff)
parentf4afd6bf3ab5527b978550697b0660ba4630a17e (diff)
Merge "Enforce INTERACT_ACROSS_USERS_FULL for cross-user event reports." into main
-rw-r--r--services/usage/java/com/android/server/usage/UsageStatsService.java9
1 files changed, 8 insertions, 1 deletions
diff --git a/services/usage/java/com/android/server/usage/UsageStatsService.java b/services/usage/java/com/android/server/usage/UsageStatsService.java
index 3d2340cca378..72db7fecb8ac 100644
--- a/services/usage/java/com/android/server/usage/UsageStatsService.java
+++ b/services/usage/java/com/android/server/usage/UsageStatsService.java
@@ -2278,6 +2278,12 @@ public class UsageStatsService extends SystemService implements
"Only the system or holders of the REPORT_USAGE_STATS"
+ " permission are allowed to call reportUserInteraction");
}
+ if (userId != UserHandle.getCallingUserId()) {
+ // Cross-user event reporting.
+ getContext().enforceCallingPermission(
+ Manifest.permission.INTERACT_ACROSS_USERS_FULL,
+ "Caller doesn't have INTERACT_ACROSS_USERS_FULL permission");
+ }
} else {
if (!isCallingUidSystem()) {
throw new SecurityException("Only system is allowed to call"
@@ -2287,7 +2293,8 @@ public class UsageStatsService extends SystemService implements
// Verify if this package exists before reporting an event for it.
if (mPackageManagerInternal.getPackageUid(packageName, 0, userId) < 0) {
- throw new IllegalArgumentException("Package " + packageName + "not exist!");
+ throw new IllegalArgumentException("Package " + packageName
+ + " does not exist!");
}
final Event event = new Event(USER_INTERACTION, SystemClock.elapsedRealtime());