@@ -10988,7 +10988,7 @@ public Intent registerReceiver(IApplicationThread caller, String callerPackage,
1098810988 BroadcastQueue queue = broadcastQueueForIntent(intent);
1098910989 BroadcastRecord r = new BroadcastRecord(queue, intent, null,
1099010990 null, -1, -1, null, receivers, null, 0, null, null,
10991- false, true, true, false, -1);
10991+ false, true, true, -1);
1099210992 queue.enqueueParallelBroadcastLocked(r);
1099310993 queue.scheduleBroadcastsLocked();
1099410994 }
@@ -11081,29 +11081,27 @@ private final int broadcastIntentLocked(ProcessRecord callerApp,
1108111081 Slog.w(TAG, "Broadcast " + intent + " not ordered but result callback requested!");
1108211082 }
1108311083
11084- boolean onlySendToCaller = false;
11085-
1108611084 // If the caller is trying to send this broadcast to a different
1108711085 // user, verify that is allowed.
1108811086 if (UserHandle.getUserId(callingUid) != userId) {
1108911087 if (checkComponentPermission(
11090- android.Manifest.permission.INTERACT_ACROSS_USERS_FULL ,
11091- callingPid, callingUid, -1, true)
11092- != PackageManager.PERMISSION_GRANTED) {
11093- if (checkComponentPermission(
11094- android.Manifest.permission.INTERACT_ACROSS_USERS,
11095- callingPid, callingUid, -1, true)
11096- == PackageManager.PERMISSION_GRANTED) {
11097- onlySendToCaller = true;
11098- } else {
11099- String msg = "Permission Denial: " + intent.getAction( )
11100- + " broadcast from " + callerPackage
11101- + " asks to send as user " + userId
11102- + " but is calling from user " + UserHandle.getUserId(callingUid)
11103- + "; this requires "
11104- + android.Manifest.permission.INTERACT_ACROSS_USERS;
11105- Slog.w(TAG, msg);
11106- throw new SecurityException(msg) ;
11088+ android.Manifest.permission.INTERACT_ACROSS_USERS ,
11089+ callingPid, callingUid, -1, true) != PackageManager.PERMISSION_GRANTED
11090+ && checkComponentPermission(
11091+ android.Manifest.permission.INTERACT_ACROSS_USERS_FULL,
11092+ callingPid, callingUid, -1, true)
11093+ != PackageManager.PERMISSION_GRANTED) {
11094+ String msg = "Permission Denial: " + intent.getAction()
11095+ + " broadcast from " + callerPackage
11096+ + " asks to send as user " + userId
11097+ + " but is calling from user " + UserHandle.getUserId(callingUid )
11098+ + "; this requires "
11099+ + android.Manifest.permission.INTERACT_ACROSS_USERS;
11100+ Slog.w(TAG, msg);
11101+ throw new SecurityException(msg);
11102+ } else {
11103+ if (userId == UserHandle.USER_CURRENT) {
11104+ userId = mCurrentUserId ;
1110711105 }
1110811106 }
1110911107 }
@@ -11294,7 +11292,7 @@ private final int broadcastIntentLocked(ProcessRecord callerApp,
1129411292 BroadcastRecord r = new BroadcastRecord(queue, intent, callerApp,
1129511293 callerPackage, callingPid, callingUid, requiredPermission,
1129611294 registeredReceivers, resultTo, resultCode, resultData, map,
11297- ordered, sticky, false, onlySendToCaller, userId);
11295+ ordered, sticky, false, userId);
1129811296 if (DEBUG_BROADCAST) Slog.v(
1129911297 TAG, "Enqueueing parallel broadcast " + r);
1130011298 final boolean replaced = replacePending && queue.replaceParallelBroadcastLocked(r);
@@ -11384,7 +11382,7 @@ private final int broadcastIntentLocked(ProcessRecord callerApp,
1138411382 BroadcastRecord r = new BroadcastRecord(queue, intent, callerApp,
1138511383 callerPackage, callingPid, callingUid, requiredPermission,
1138611384 receivers, resultTo, resultCode, resultData, map, ordered,
11387- sticky, false, onlySendToCaller, userId);
11385+ sticky, false, userId);
1138811386 if (DEBUG_BROADCAST) Slog.v(
1138911387 TAG, "Enqueueing ordered broadcast " + r
1139011388 + ": prev had " + queue.mOrderedBroadcasts.size());
0 commit comments