summaryrefslogtreecommitdiffstats
path: root/services/core/java
diff options
context:
space:
mode:
authorDianne Hackborn <hackbod@google.com>2014-02-10 13:47:39 -0800
committerDianne Hackborn <hackbod@google.com>2014-02-10 13:47:39 -0800
commit9358dcca6f3d33d1e3f976a4c3a5f61e103930dc (patch)
treec7ee5a50f9c2262b0053f01a780beff7ec2e783c /services/core/java
parenteaddb849629b6585d7c11699bb7a1f0d2b984783 (diff)
downloadframeworks_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.java35
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);
}
}