summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Makoto Onuki <omakoto@google.com> 2016-07-28 13:10:42 -0700
committer Kenny Guy <kennyguy@google.com> 2017-02-23 11:24:34 +0000
commita08c6a1cfbed86da5a9ab5a7838f0318be6c64d0 (patch)
tree65ac3692b5f954a714f4b06808f03c95f84c2017
parent9aca89293a1dd6e27717e7e8491a0e5277556b16 (diff)
DO NOT MERGE Relax isUserRunning check and allow in-profile calls
Bug 30475753 Bug 35667752 Change-Id: I739ee7e259f041f5e133edf048b6b54cb7a770db (cherry picked from commit 8198deacb52eb082ae9f0a5658d594dc9b689882)
-rw-r--r--services/core/java/com/android/server/am/ActivityManagerService.java5
-rw-r--r--services/core/java/com/android/server/am/UserController.java3
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 8207877cbe31..0c31ade90650 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 b685dd3f6771..57dfb7ea41a7 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);