summaryrefslogtreecommitdiffstats
path: root/services/java/com/android/server/am
diff options
context:
space:
mode:
authorDianne Hackborn <hackbod@google.com>2009-07-10 16:05:59 -0700
committerDianne Hackborn <hackbod@google.com>2009-07-10 16:05:59 -0700
commit54a26bc85f4fe972e929e42b986c65a710a229b3 (patch)
treeac71617b901f2acc11f9bcba8ad09c8c6f78adfc /services/java/com/android/server/am
parent9629e04d7a5af62b58ebb6364b53f328d90bfc0e (diff)
parent889c2d37f784301ea968e8a44d450ae1d8717a18 (diff)
downloadframeworks_base-54a26bc85f4fe972e929e42b986c65a710a229b3.zip
frameworks_base-54a26bc85f4fe972e929e42b986c65a710a229b3.tar.gz
frameworks_base-54a26bc85f4fe972e929e42b986c65a710a229b3.tar.bz2
resolved conflicts for merge of 889c2d37 to master
Diffstat (limited to 'services/java/com/android/server/am')
-rw-r--r--services/java/com/android/server/am/ActivityManagerService.java23
1 files changed, 23 insertions, 0 deletions
diff --git a/services/java/com/android/server/am/ActivityManagerService.java b/services/java/com/android/server/am/ActivityManagerService.java
index 71798c2..856ae42 100644
--- a/services/java/com/android/server/am/ActivityManagerService.java
+++ b/services/java/com/android/server/am/ActivityManagerService.java
@@ -10874,6 +10874,29 @@ public final class ActivityManagerService extends ActivityManagerNative implemen
mHandler.sendEmptyMessage(UPDATE_TIME_ZONE);
}
+ /*
+ * Prevent non-system code (defined here to be non-persistent
+ * processes) from sending protected broadcasts.
+ */
+ if (callingUid == Process.SYSTEM_UID || callingUid == Process.PHONE_UID
+ || callingUid == Process.SHELL_UID || callingUid == 0) {
+ // Always okay.
+ } else if (callerApp == null || !callerApp.persistent) {
+ try {
+ if (ActivityThread.getPackageManager().isProtectedBroadcast(
+ intent.getAction())) {
+ String msg = "Permission Denial: not allowed to send broadcast "
+ + intent.getAction() + " from pid="
+ + callingPid + ", uid=" + callingUid;
+ Log.w(TAG, msg);
+ throw new SecurityException(msg);
+ }
+ } catch (RemoteException e) {
+ Log.w(TAG, "Remote exception", e);
+ return BROADCAST_SUCCESS;
+ }
+ }
+
// Add to the sticky list if requested.
if (sticky) {
if (checkPermission(android.Manifest.permission.BROADCAST_STICKY,