summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKunal Malhotra <malhk@google.com>2023-02-02 23:48:27 +0000
committerAndroid Build Coastguard Worker <android-build-coastguard-worker@google.com>2023-10-11 22:49:34 +0000
commit4d71fa0cd4459f7bfed4808c53d3c62a96e32aa6 (patch)
tree8137a0f3d45674b53482764d4535178f4aabe4ad
parentcb7e9c7549a2a076ec00db15e3da0d21b31b0b1c (diff)
downloadbase-4d71fa0cd4459f7bfed4808c53d3c62a96e32aa6.tar.gz
Adding in verification of calling UID in onShellCommand
Test: manual testing on device Bug: b/261709193 (cherry picked from commit b651d295b44eb82d664861b77f33dbde1bce9453) (cherry picked from https://googleplex-android-review.googlesource.com/q/commit:3ef3f18ba3094c4cc4f954ba23d1da421f9ca8b0) Merged-In: I68903ebd6d3d85f4bc820b745e3233a448b62273 Change-Id: I68903ebd6d3d85f4bc820b745e3233a448b62273
-rw-r--r--services/core/java/com/android/server/am/ActivityManagerService.java7
1 files changed, 7 insertions, 0 deletions
diff --git a/services/core/java/com/android/server/am/ActivityManagerService.java b/services/core/java/com/android/server/am/ActivityManagerService.java
index 8089dcfe7ebc..638e3946c8f9 100644
--- a/services/core/java/com/android/server/am/ActivityManagerService.java
+++ b/services/core/java/com/android/server/am/ActivityManagerService.java
@@ -9694,6 +9694,13 @@ public class ActivityManagerService extends IActivityManager.Stub
public void onShellCommand(FileDescriptor in, FileDescriptor out,
FileDescriptor err, String[] args, ShellCallback callback,
ResultReceiver resultReceiver) {
+ final int callingUid = Binder.getCallingUid();
+ if (callingUid != ROOT_UID && callingUid != Process.SHELL_UID) {
+ if (resultReceiver != null) {
+ resultReceiver.send(-1, null);
+ }
+ throw new SecurityException("Shell commands are only callable by root or shell");
+ }
(new ActivityManagerShellCommand(this, false)).exec(
this, in, out, err, args, callback, resultReceiver);
}