summaryrefslogtreecommitdiffstats
path: root/packages/SettingsProvider/src
diff options
context:
space:
mode:
authorChristopher Tate <ctate@google.com>2012-09-18 13:27:36 -0700
committerChristopher Tate <ctate@google.com>2012-09-18 13:27:36 -0700
commitc8459dc85e53a9275c89190b35f1da35cd996e46 (patch)
tree63d2ef3c319eb51bf457ecf21422fcfb5fdba1e4 /packages/SettingsProvider/src
parent21dfd7c5fe9e42d2ef3ac7423065c86dfe8f29da (diff)
downloadframeworks_base-c8459dc85e53a9275c89190b35f1da35cd996e46.zip
frameworks_base-c8459dc85e53a9275c89190b35f1da35cd996e46.tar.gz
frameworks_base-c8459dc85e53a9275c89190b35f1da35cd996e46.tar.bz2
Settings provider needs to send notifications as itself
... and not as its ultimate caller, who may be a less-privileged application. Fixes bug 7188309 Change-Id: Iffd37b8da84f683bf665bf3d48c0b7fbc8dd721d
Diffstat (limited to 'packages/SettingsProvider/src')
-rw-r--r--packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java7
1 files changed, 6 insertions, 1 deletions
diff --git a/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java b/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java
index a0ae9e3..9839c16 100644
--- a/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java
+++ b/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java
@@ -344,7 +344,12 @@ public class SettingsProvider extends ContentProvider {
String notify = uri.getQueryParameter("notify");
if (notify == null || "true".equals(notify)) {
final int notifyTarget = isGlobal ? UserHandle.USER_ALL : userHandle;
- getContext().getContentResolver().notifyChange(uri, null, true, notifyTarget);
+ final long oldId = Binder.clearCallingIdentity();
+ try {
+ getContext().getContentResolver().notifyChange(uri, null, true, notifyTarget);
+ } finally {
+ Binder.restoreCallingIdentity(oldId);
+ }
if (LOCAL_LOGV) Log.v(TAG, "notifying for " + notifyTarget + ": " + uri);
} else {
if (LOCAL_LOGV) Log.v(TAG, "notification suppressed: " + uri);