summaryrefslogtreecommitdiff
path: root/services/usage/java
diff options
context:
space:
mode:
authorMichael Wachenschwanz <mwachens@google.com>2020-04-20 15:15:35 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2020-04-20 15:15:35 +0000
commitdcc388ab4461978f25cf95accf82874c2fc4decb (patch)
tree5168846aacd7f1ec4eec5f4889026ae37bd460d4 /services/usage/java
parent711d0a9a76dddc197a124f3cc484eac0e9bacd8d (diff)
parentd2b132fac44c38aea685db9170f24cf93a25ca99 (diff)
Merge "Add permission check to UsageStatsManager#isAppInactive" into rvc-dev
Diffstat (limited to 'services/usage/java')
-rw-r--r--services/usage/java/com/android/server/usage/UsageStatsService.java18
1 files changed, 15 insertions, 3 deletions
diff --git a/services/usage/java/com/android/server/usage/UsageStatsService.java b/services/usage/java/com/android/server/usage/UsageStatsService.java
index bbe9851520a1..5b5d57bf2f51 100644
--- a/services/usage/java/com/android/server/usage/UsageStatsService.java
+++ b/services/usage/java/com/android/server/usage/UsageStatsService.java
@@ -1577,15 +1577,27 @@ public class UsageStatsService extends SystemService implements
}
@Override
- public boolean isAppInactive(String packageName, int userId) {
+ public boolean isAppInactive(String packageName, int userId, String callingPackage) {
+ final int callingUid = Binder.getCallingUid();
try {
userId = ActivityManager.getService().handleIncomingUser(Binder.getCallingPid(),
- Binder.getCallingUid(), userId, false, false, "isAppInactive", null);
+ callingUid, userId, false, false, "isAppInactive", null);
} catch (RemoteException re) {
throw re.rethrowFromSystemServer();
}
+
+ // If the calling app is asking about itself, continue, else check for permission.
+ if (packageName.equals(callingPackage)) {
+ final int actualCallingUid = mPackageManagerInternal.getPackageUidInternal(
+ callingPackage, 0, userId);
+ if (actualCallingUid != callingUid) {
+ return false;
+ }
+ } else if (!hasPermission(callingPackage)) {
+ return false;
+ }
final boolean obfuscateInstantApps = shouldObfuscateInstantAppsForCaller(
- Binder.getCallingUid(), userId);
+ callingUid, userId);
final long token = Binder.clearCallingIdentity();
try {
return mAppStandby.isAppIdleFiltered(