Relax permission requirement for sending broadcasts to other users
Also handle USER_CURRENT for broadcasts
Change-Id: I2df5616ac22b7c670a7d007b8d505d4d4d99a24e
diff --git a/services/java/com/android/server/am/BroadcastQueue.java b/services/java/com/android/server/am/BroadcastQueue.java
index 7873dd8..34dec3a 100644
--- a/services/java/com/android/server/am/BroadcastQueue.java
+++ b/services/java/com/android/server/am/BroadcastQueue.java
@@ -372,17 +372,7 @@
private final void deliverToRegisteredReceiverLocked(BroadcastRecord r,
BroadcastFilter filter, boolean ordered) {
boolean skip = false;
- if (r.onlySendToCaller) {
- if (!UserHandle.isSameApp(r.callingUid, filter.owningUid)) {
- Slog.w(TAG, "Permission Denial: broadcasting "
- + r.intent.toString()
- + " from " + r.callerPackage + " (pid="
- + r.callingPid + ", uid=" + r.callingUid + ")"
- + " not allowed to go to different app " + filter.owningUid);
- skip = true;
- }
- }
- if (!skip && filter.requiredPermission != null) {
+ if (filter.requiredPermission != null) {
int perm = mService.checkComponentPermission(filter.requiredPermission,
r.callingPid, r.callingUid, -1, true);
if (perm != PackageManager.PERMISSION_GRANTED) {
@@ -667,18 +657,6 @@
info.activityInfo.name);
boolean skip = false;
- if (r.onlySendToCaller) {
- if (!UserHandle.isSameApp(r.callingUid, info.activityInfo.applicationInfo.uid)) {
- Slog.w(TAG, "Permission Denial: broadcasting "
- + r.intent.toString()
- + " from " + r.callerPackage + " (pid="
- + r.callingPid + ", uid=" + r.callingUid + ")"
- + " to " + component.flattenToShortString()
- + " not allowed to go to different app "
- + info.activityInfo.applicationInfo.uid);
- skip = true;
- }
- }
int perm = mService.checkComponentPermission(info.activityInfo.permission,
r.callingPid, r.callingUid, info.activityInfo.applicationInfo.uid,
info.activityInfo.exported);