diff --git a/services/core/java/com/android/server/am/ActiveServices.java b/services/core/java/com/android/server/am/ActiveServices.java index 5655dc54ded71..041fee2352e31 100644 --- a/services/core/java/com/android/server/am/ActiveServices.java +++ b/services/core/java/com/android/server/am/ActiveServices.java @@ -16,6 +16,8 @@ package com.android.server.am; +import static android.content.pm.PackageManager.PERMISSION_GRANTED; +import static android.Manifest.permission.INTERACT_ACROSS_USERS_FULL; import static com.android.server.am.ActivityManagerDebugConfig.*; import java.io.FileDescriptor; @@ -1391,8 +1393,7 @@ public final class ActiveServices { } if (r != null) { if (mAm.checkComponentPermission(r.permission, - callingPid, callingUid, r.appInfo.uid, r.exported) - != PackageManager.PERMISSION_GRANTED) { + callingPid, callingUid, r.appInfo.uid, r.exported) != PERMISSION_GRANTED) { if (!r.exported) { Slog.w(TAG, "Permission Denial: Accessing service " + r.name + " from pid=" + callingPid @@ -2775,16 +2776,15 @@ public final class ActiveServices { return info; } - List getRunningServiceInfoLocked(int maxNum, int flags) { + List getRunningServiceInfoLocked(int maxNum, int flags, + int callingUid, boolean allowed) { ArrayList res = new ArrayList(); - final int uid = Binder.getCallingUid(); final long ident = Binder.clearCallingIdentity(); try { - if (ActivityManager.checkUidPermission( - android.Manifest.permission.INTERACT_ACROSS_USERS_FULL, - uid) == PackageManager.PERMISSION_GRANTED) { + if (ActivityManager.checkUidPermission(INTERACT_ACROSS_USERS_FULL, callingUid) + == PERMISSION_GRANTED) { int[] users = mAm.mUserController.getUsers(); for (int ui=0; ui alls = getServicesLocked(users[ui]); @@ -2802,16 +2802,20 @@ public final class ActiveServices { res.add(info); } } else { - int userId = UserHandle.getUserId(uid); + int userId = UserHandle.getUserId(callingUid); ArrayMap alls = getServicesLocked(userId); for (int i=0; i