diff --git a/services/core/java/com/android/server/am/ActivityManagerService.java b/services/core/java/com/android/server/am/ActivityManagerService.java index a70cf018fa958..e65efd0d44140 100644 --- a/services/core/java/com/android/server/am/ActivityManagerService.java +++ b/services/core/java/com/android/server/am/ActivityManagerService.java @@ -17279,6 +17279,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( @@ -17345,6 +17348,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"); } @@ -17397,9 +17403,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