aboutsummaryrefslogtreecommitdiffstats
path: root/packages
diff options
context:
space:
mode:
Diffstat (limited to 'packages')
-rw-r--r--packages/CMSettingsProvider/src/org/cyanogenmod/cmsettings/CMSettingsProvider.java19
1 files changed, 13 insertions, 6 deletions
diff --git a/packages/CMSettingsProvider/src/org/cyanogenmod/cmsettings/CMSettingsProvider.java b/packages/CMSettingsProvider/src/org/cyanogenmod/cmsettings/CMSettingsProvider.java
index 196c942..2f91e1e 100644
--- a/packages/CMSettingsProvider/src/org/cyanogenmod/cmsettings/CMSettingsProvider.java
+++ b/packages/CMSettingsProvider/src/org/cyanogenmod/cmsettings/CMSettingsProvider.java
@@ -316,12 +316,10 @@ public class CMSettingsProvider extends ContentProvider {
// Framework can't do automatic permission checking for calls, so we need
// to do it here.
- if (getContext().checkCallingOrSelfPermission(
- cyanogenmod.platform.Manifest.permission.WRITE_SETTINGS) !=
- PackageManager.PERMISSION_GRANTED) {
- throw new SecurityException(
- String.format("Permission denial: writing to settings requires %1$s",
- cyanogenmod.platform.Manifest.permission.WRITE_SETTINGS));
+ if (CMSettings.CALL_METHOD_PUT_SYSTEM.equals(method)) {
+ enforceWritePermission(cyanogenmod.platform.Manifest.permission.WRITE_SETTINGS);
+ } else {
+ enforceWritePermission(cyanogenmod.platform.Manifest.permission.WRITE_SECURE_SETTINGS);
}
// Put methods
@@ -342,6 +340,15 @@ public class CMSettingsProvider extends ContentProvider {
return null;
}
+ private void enforceWritePermission(String permission) {
+ if (getContext().checkCallingOrSelfPermission(permission)
+ != PackageManager.PERMISSION_GRANTED) {
+ throw new SecurityException(
+ String.format("Permission denial: writing to settings requires %s",
+ permission));
+ }
+ }
+
/**
* Looks up a single value for a specific user, uri, and key.
* @param userId The id of the user to perform the lookup for.