diff options
| -rw-r--r-- | services/core/java/com/android/server/am/ActiveServices.java | 5 | ||||
| -rw-r--r-- | services/core/java/com/android/server/am/ActivityManagerService.java | 13 |
2 files changed, 10 insertions, 8 deletions
diff --git a/services/core/java/com/android/server/am/ActiveServices.java b/services/core/java/com/android/server/am/ActiveServices.java index 2bc131fae905..b4f8f61971f8 100644 --- a/services/core/java/com/android/server/am/ActiveServices.java +++ b/services/core/java/com/android/server/am/ActiveServices.java @@ -2810,14 +2810,13 @@ public final class ActiveServices { } List<ActivityManager.RunningServiceInfo> getRunningServiceInfoLocked(int maxNum, int flags, - int callingUid, boolean allowed) { + int callingUid, boolean allowed, boolean canInteractAcrossUsers) { ArrayList<ActivityManager.RunningServiceInfo> res = new ArrayList<ActivityManager.RunningServiceInfo>(); final long ident = Binder.clearCallingIdentity(); try { - if (ActivityManager.checkUidPermission(INTERACT_ACROSS_USERS_FULL, callingUid) - == PERMISSION_GRANTED) { + if (canInteractAcrossUsers) { int[] users = mAm.mUserController.getUsers(); for (int ui=0; ui<users.length && res.size() < maxNum; ui++) { ArrayMap<ComponentName, ServiceRecord> alls = getServicesLocked(users[ui]); diff --git a/services/core/java/com/android/server/am/ActivityManagerService.java b/services/core/java/com/android/server/am/ActivityManagerService.java index 67cac981f599..fb53419246f0 100644 --- a/services/core/java/com/android/server/am/ActivityManagerService.java +++ b/services/core/java/com/android/server/am/ActivityManagerService.java @@ -17506,12 +17506,15 @@ public class ActivityManagerService extends IActivityManager.Stub public List<ActivityManager.RunningServiceInfo> getServices(int maxNum, int flags) { enforceNotIsolatedCaller("getServices"); - synchronized (this) { - final int callingUid = Binder.getCallingUid(); - final boolean allowed = isGetTasksAllowed("getServices", Binder.getCallingPid(), - callingUid); - return mServices.getRunningServiceInfoLocked(maxNum, flags, callingUid, allowed); + final int callingUid = Binder.getCallingUid(); + final boolean canInteractAcrossUsers = (ActivityManager.checkUidPermission( + INTERACT_ACROSS_USERS_FULL, callingUid) == PERMISSION_GRANTED); + final boolean allowed = isGetTasksAllowed("getServices", Binder.getCallingPid(), + callingUid); + synchronized (this) { + return mServices.getRunningServiceInfoLocked(maxNum, flags, callingUid, + allowed, canInteractAcrossUsers); } } |