From 904870f07f5e780926c92c2cd6ab9a28ca949105 Mon Sep 17 00:00:00 2001 From: Palak Chaudhary Date: Thu, 19 Jan 2023 19:41:45 +0000 Subject: [PATCH] Check broadcasts sent from sandbox process UID for intents without an action as well Bug: b/266069199 Test: atest SdkSandboxRestrictionsTest#testSendBroadcastsRestrictions_withAction atets SdkSandboxRestrictionsTest#testSendBroadcastRestrictions_withoutAction Change-Id: Iac8b00ae03216739f1a8975b6887491a62c1c711 --- .../server/am/ActivityManagerService.java | 20 +++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/services/core/java/com/android/server/am/ActivityManagerService.java b/services/core/java/com/android/server/am/ActivityManagerService.java index de87a0cf7f981..5b35105d54139 100644 --- a/services/core/java/com/android/server/am/ActivityManagerService.java +++ b/services/core/java/com/android/server/am/ActivityManagerService.java @@ -14254,6 +14254,16 @@ public class ActivityManagerService extends IActivityManager.Stub } } + if (Process.isSdkSandboxUid(realCallingUid)) { + SdkSandboxManagerLocal sdkSandboxManagerLocal = LocalManagerRegistry.getManager( + SdkSandboxManagerLocal.class); + if (sdkSandboxManagerLocal == null) { + throw new IllegalStateException("SdkSandboxManagerLocal not found when sending" + + " a broadcast from an SDK sandbox uid."); + } + sdkSandboxManagerLocal.enforceAllowedToSendBroadcast(intent); + } + boolean timeoutExempt = false; if (action != null) { @@ -14264,16 +14274,6 @@ public class ActivityManagerService extends IActivityManager.Stub intent.addFlags(Intent.FLAG_RECEIVER_INCLUDE_BACKGROUND); } - if (Process.isSdkSandboxUid(realCallingUid)) { - SdkSandboxManagerLocal sdkSandboxManagerLocal = LocalManagerRegistry.getManager( - SdkSandboxManagerLocal.class); - if (sdkSandboxManagerLocal == null) { - throw new IllegalStateException("SdkSandboxManagerLocal not found when sending" - + " a broadcast from an SDK sandbox uid."); - } - sdkSandboxManagerLocal.enforceAllowedToSendBroadcast(intent); - } - switch (action) { case Intent.ACTION_MEDIA_SCANNER_SCAN_FILE: UserManagerInternal umInternal = LocalServices.getService(