summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--services/core/java/com/android/server/am/ActivityManagerService.java14
1 files changed, 9 insertions, 5 deletions
diff --git a/services/core/java/com/android/server/am/ActivityManagerService.java b/services/core/java/com/android/server/am/ActivityManagerService.java
index 7acb1bf47e78..3f4878e38029 100644
--- a/services/core/java/com/android/server/am/ActivityManagerService.java
+++ b/services/core/java/com/android/server/am/ActivityManagerService.java
@@ -20195,10 +20195,11 @@ public class ActivityManagerService extends IActivityManager.Stub
public int checkOperation(int code, int uid, String packageName, boolean raw,
QuadFunction<Integer, Integer, String, Boolean, Integer> superImpl) {
if (uid == mTargetUid && isTargetOp(code)) {
+ final int shellUid = UserHandle.getUid(UserHandle.getUserId(uid),
+ Process.SHELL_UID);
final long identity = Binder.clearCallingIdentity();
try {
- return superImpl.apply(code, Process.SHELL_UID,
- "com.android.shell", raw);
+ return superImpl.apply(code, shellUid, "com.android.shell", raw);
} finally {
Binder.restoreCallingIdentity(identity);
}
@@ -20210,10 +20211,11 @@ public class ActivityManagerService extends IActivityManager.Stub
public int checkAudioOperation(int code, int usage, int uid, String packageName,
QuadFunction<Integer, Integer, Integer, String, Integer> superImpl) {
if (uid == mTargetUid && isTargetOp(code)) {
+ final int shellUid = UserHandle.getUid(UserHandle.getUserId(uid),
+ Process.SHELL_UID);
final long identity = Binder.clearCallingIdentity();
try {
- return superImpl.apply(code, usage, Process.SHELL_UID,
- "com.android.shell");
+ return superImpl.apply(code, usage, shellUid, "com.android.shell");
} finally {
Binder.restoreCallingIdentity(identity);
}
@@ -20228,9 +20230,11 @@ public class ActivityManagerService extends IActivityManager.Stub
@NonNull HeptFunction<Integer, Integer, String, String, Boolean, String, Boolean,
Integer> superImpl) {
if (uid == mTargetUid && isTargetOp(code)) {
+ final int shellUid = UserHandle.getUid(UserHandle.getUserId(uid),
+ Process.SHELL_UID);
final long identity = Binder.clearCallingIdentity();
try {
- return superImpl.apply(code, Process.SHELL_UID, "com.android.shell", featureId,
+ return superImpl.apply(code, shellUid, "com.android.shell", featureId,
shouldCollectAsyncNotedOp, message, shouldCollectMessage);
} finally {
Binder.restoreCallingIdentity(identity);