From 11bb6fbc5e0abb0e3f57f71d7ff10c6b15f5293f Mon Sep 17 00:00:00 2001 From: Sanjana Sunil Date: Wed, 8 Mar 2023 17:57:59 +0000 Subject: [PATCH] Do not verify client app uid and package when stopping the sandbox The sandbox could be stopped after the app process was killed from an uninstall. The check that verifies that a client app uid belongs to a given package name could fail if app was being uninstalled. Remove the check when stopping the sandbox. Bug: 272046491 Test: Run sdksandbox tests Change-Id: I6b25344cd02454c19ffa0beeff18bda02041a1af --- .../com/android/server/am/ActivityManagerService.java | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/services/core/java/com/android/server/am/ActivityManagerService.java b/services/core/java/com/android/server/am/ActivityManagerService.java index 4ba6854b92347..67acfac79a362 100644 --- a/services/core/java/com/android/server/am/ActivityManagerService.java +++ b/services/core/java/com/android/server/am/ActivityManagerService.java @@ -17246,6 +17246,9 @@ public class ActivityManagerService extends IActivityManager.Stub public ComponentName startSdkSandboxService(Intent service, int clientAppUid, String clientAppPackage, String processName) throws RemoteException { validateSdkSandboxParams(service, clientAppUid, clientAppPackage, processName); + if (mAppOpsService.checkPackage(clientAppUid, clientAppPackage) != MODE_ALLOWED) { + throw new IllegalArgumentException("uid does not belong to provided package"); + } // TODO(b/269598719): Is passing the application thread of the system_server alright? // e.g. the sandbox getting privileged access due to this. ComponentName cn = ActivityManagerService.this.startService( @@ -17312,6 +17315,9 @@ public class ActivityManagerService extends IActivityManager.Stub String processName, long flags) throws RemoteException { validateSdkSandboxParams(service, clientAppUid, clientAppPackage, processName); + if (mAppOpsService.checkPackage(clientAppUid, clientAppPackage) != MODE_ALLOWED) { + throw new IllegalArgumentException("uid does not belong to provided package"); + } if (conn == null) { throw new IllegalArgumentException("connection is null"); } @@ -17364,9 +17370,6 @@ public class ActivityManagerService extends IActivityManager.Stub if (!UserHandle.isApp(clientAppUid)) { throw new IllegalArgumentException("uid is not within application range"); } - if (mAppOpsService.checkPackage(clientAppUid, clientAppPackage) != MODE_ALLOWED) { - throw new IllegalArgumentException("uid does not belong to provided package"); - } } @Override