From 173376df59b15ebf61282920b81344c7327c47cc Mon Sep 17 00:00:00 2001 From: Songchun Fan Date: Fri, 18 Mar 2022 19:05:58 +0000 Subject: [PATCH] [pm] fix broadcast permission check for instant apps ACCESS_INSTANT_APPS permission check was ignored by mistake. BUG: 224547584 Test: manual (will try to reproduce on T) Change-Id: Ibd0d3da78f0a32c85d2aad7de83cb91e1453b6a2 --- .../java/com/android/server/pm/BroadcastHelper.java | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/services/core/java/com/android/server/pm/BroadcastHelper.java b/services/core/java/com/android/server/pm/BroadcastHelper.java index bf1196d6b969d..ed71f1eb53136 100644 --- a/services/core/java/com/android/server/pm/BroadcastHelper.java +++ b/services/core/java/com/android/server/pm/BroadcastHelper.java @@ -20,7 +20,6 @@ import static android.os.PowerExemptionManager.REASON_LOCKED_BOOT_COMPLETED; import static android.os.PowerExemptionManager.TEMPORARY_ALLOW_LIST_TYPE_FOREGROUND_SERVICE_ALLOWED; import static com.android.server.pm.PackageManagerService.DEBUG_INSTALL; -import static com.android.server.pm.PackageManagerService.EMPTY_INT_ARRAY; import static com.android.server.pm.PackageManagerService.PACKAGE_SCHEME; import static com.android.server.pm.PackageManagerService.PLATFORM_PACKAGE_NAME; import static com.android.server.pm.PackageManagerService.TAG; @@ -86,11 +85,14 @@ public final class BroadcastHelper { } else { resolvedUserIds = userIds; } - doSendBroadcast(action, pkg, extras, flags, targetPkg, finishedReceiver, - resolvedUserIds, false, broadcastAllowList, bOptions); - if (instantUserIds != null && instantUserIds != EMPTY_INT_ARRAY) { + + if (ArrayUtils.isEmpty(instantUserIds)) { doSendBroadcast(action, pkg, extras, flags, targetPkg, finishedReceiver, - instantUserIds, true, null, bOptions); + resolvedUserIds, false /* isInstantApp */, broadcastAllowList, bOptions); + } else { + // send restricted broadcasts for instant apps + doSendBroadcast(action, pkg, extras, flags, targetPkg, finishedReceiver, + instantUserIds, true /* isInstantApp */, null, bOptions); } } catch (RemoteException ex) { }