diff options
author | Dianne Hackborn <hackbod@google.com> | 2014-02-10 13:47:39 -0800 |
---|---|---|
committer | Dianne Hackborn <hackbod@google.com> | 2014-02-10 13:47:39 -0800 |
commit | 9358dcca6f3d33d1e3f976a4c3a5f61e103930dc (patch) | |
tree | c7ee5a50f9c2262b0053f01a780beff7ec2e783c /services/core/java | |
parent | eaddb849629b6585d7c11699bb7a1f0d2b984783 (diff) | |
download | frameworks_base-9358dcca6f3d33d1e3f976a4c3a5f61e103930dc.zip frameworks_base-9358dcca6f3d33d1e3f976a4c3a5f61e103930dc.tar.gz frameworks_base-9358dcca6f3d33d1e3f976a4c3a5f61e103930dc.tar.bz2 |
Maybe fix issue #12957738: SecurityException in...
...Multiple Processes: uid 10069 does not have
android.permission.UPDATE_DEVICE_STATS.
Change-Id: Ibabb5b09d52412df8bebdc85a584f89e175b1ec5
Diffstat (limited to 'services/core/java')
-rw-r--r-- | services/core/java/com/android/server/am/ActivityManagerService.java | 35 |
1 files changed, 20 insertions, 15 deletions
diff --git a/services/core/java/com/android/server/am/ActivityManagerService.java b/services/core/java/com/android/server/am/ActivityManagerService.java index 8975d12..c73ca1a 100644 --- a/services/core/java/com/android/server/am/ActivityManagerService.java +++ b/services/core/java/com/android/server/am/ActivityManagerService.java @@ -7755,22 +7755,27 @@ public final class ActivityManagerService extends ActivityManagerNative */ public void removeContentProvider(IBinder connection, boolean stable) { enforceNotIsolatedCaller("removeContentProvider"); - synchronized (this) { - ContentProviderConnection conn; - try { - conn = (ContentProviderConnection)connection; - } catch (ClassCastException e) { - String msg ="removeContentProvider: " + connection - + " not a ContentProviderConnection"; - Slog.w(TAG, msg); - throw new IllegalArgumentException(msg); - } - if (conn == null) { - throw new NullPointerException("connection is null"); - } - if (decProviderCountLocked(conn, null, null, stable)) { - updateOomAdjLocked(); + long ident = Binder.clearCallingIdentity(); + try { + synchronized (this) { + ContentProviderConnection conn; + try { + conn = (ContentProviderConnection)connection; + } catch (ClassCastException e) { + String msg ="removeContentProvider: " + connection + + " not a ContentProviderConnection"; + Slog.w(TAG, msg); + throw new IllegalArgumentException(msg); + } + if (conn == null) { + throw new NullPointerException("connection is null"); + } + if (decProviderCountLocked(conn, null, null, stable)) { + updateOomAdjLocked(); + } } + } finally { + Binder.restoreCallingIdentity(ident); } } |