From a08c6a1cfbed86da5a9ab5a7838f0318be6c64d0 Mon Sep 17 00:00:00 2001 From: Makoto Onuki Date: Thu, 28 Jul 2016 13:10:42 -0700 Subject: [PATCH] DO NOT MERGE Relax isUserRunning check and allow in-profile calls Bug 30475753 Bug 35667752 Change-Id: I739ee7e259f041f5e133edf048b6b54cb7a770db (cherry picked from commit 8198deacb52eb082ae9f0a5658d594dc9b689882) --- .../java/com/android/server/am/ActivityManagerService.java | 5 +++-- services/core/java/com/android/server/am/UserController.java | 3 +++ 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/services/core/java/com/android/server/am/ActivityManagerService.java b/services/core/java/com/android/server/am/ActivityManagerService.java index 8207877cbe31b..0c31ade906505 100644 --- a/services/core/java/com/android/server/am/ActivityManagerService.java +++ b/services/core/java/com/android/server/am/ActivityManagerService.java @@ -21433,8 +21433,9 @@ public final class ActivityManagerService extends ActivityManagerNative @Override public boolean isUserRunning(int userId, int flags) { - if (userId != UserHandle.getCallingUserId() && checkCallingPermission( - INTERACT_ACROSS_USERS) != PackageManager.PERMISSION_GRANTED) { + if (!mUserController.isSameProfileGroup(userId, UserHandle.getCallingUserId()) + && checkCallingPermission(INTERACT_ACROSS_USERS) + != PackageManager.PERMISSION_GRANTED) { String msg = "Permission Denial: isUserRunning() from pid=" + Binder.getCallingPid() + ", uid=" + Binder.getCallingUid() diff --git a/services/core/java/com/android/server/am/UserController.java b/services/core/java/com/android/server/am/UserController.java index b685dd3f67717..57dfb7ea41a7a 100644 --- a/services/core/java/com/android/server/am/UserController.java +++ b/services/core/java/com/android/server/am/UserController.java @@ -1453,6 +1453,9 @@ final class UserController { } boolean isSameProfileGroup(int callingUserId, int targetUserId) { + if (callingUserId == targetUserId) { + return true; + } synchronized (mUserProfileGroupIdsSelfLocked) { int callingProfile = mUserProfileGroupIdsSelfLocked.get(callingUserId, UserInfo.NO_PROFILE_GROUP_ID);