diff options
| author | 2023-12-12 19:41:49 +0000 | |
|---|---|---|
| committer | 2023-12-12 19:41:49 +0000 | |
| commit | e509b838464680f01ca9170c41efd24a7ecb72c1 (patch) | |
| tree | 20285aef85a932e4d39f0ad9568d843a5c6f2ce3 | |
| parent | b44dd499aa68cdfbfd5c102ed6778121d8b6d329 (diff) | |
| parent | f4afd6bf3ab5527b978550697b0660ba4630a17e (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.java | 9 |
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()); |