diff options
author | Dianne Hackborn <hackbod@google.com> | 2009-07-10 16:05:59 -0700 |
---|---|---|
committer | Dianne Hackborn <hackbod@google.com> | 2009-07-10 16:05:59 -0700 |
commit | 54a26bc85f4fe972e929e42b986c65a710a229b3 (patch) | |
tree | ac71617b901f2acc11f9bcba8ad09c8c6f78adfc /services/java/com/android/server/am | |
parent | 9629e04d7a5af62b58ebb6364b53f328d90bfc0e (diff) | |
parent | 889c2d37f784301ea968e8a44d450ae1d8717a18 (diff) | |
download | frameworks_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.java | 23 |
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, |