From a418cf21c9d03c1435e9adec3e025387b6345cd9 Mon Sep 17 00:00:00 2001 From: Amith Yamasani Date: Fri, 19 Jul 2013 12:39:17 -0700 Subject: [PATCH] New permission to manage device admins The previously used permission was doing double duty as the permission that device admins to check for to ensure that calls are coming from valid system components. MANAGE_DEVICE_ADMINS is system|signature and is now required to add/remove device admins. Required for: Bug: 9856348 Change-Id: I64385d2ec734c3957af21b5a5d9cffd8a3bcd299 --- api/current.txt | 1 + core/res/AndroidManifest.xml | 7 +++++++ core/res/res/values/strings.xml | 6 ++++++ packages/Keyguard/AndroidManifest.xml | 1 + .../com/android/server/DevicePolicyManagerService.java | 4 ++-- 5 files changed, 17 insertions(+), 2 deletions(-) diff --git a/api/current.txt b/api/current.txt index e7a518f6447b9..580c1a9261fa8 100644 --- a/api/current.txt +++ b/api/current.txt @@ -72,6 +72,7 @@ package android { field public static final java.lang.String LOCATION_HARDWARE = "android.permission.LOCATION_HARDWARE"; field public static final java.lang.String MANAGE_ACCOUNTS = "android.permission.MANAGE_ACCOUNTS"; field public static final java.lang.String MANAGE_APP_TOKENS = "android.permission.MANAGE_APP_TOKENS"; + field public static final java.lang.String MANAGE_DEVICE_ADMINS = "android.permission.MANAGE_DEVICE_ADMINS"; field public static final java.lang.String MANAGE_DOCUMENTS = "android.permission.MANAGE_DOCUMENTS"; field public static final java.lang.String MASTER_CLEAR = "android.permission.MASTER_CLEAR"; field public static final java.lang.String MODIFY_AUDIO_SETTINGS = "android.permission.MODIFY_AUDIO_SETTINGS"; diff --git a/core/res/AndroidManifest.xml b/core/res/AndroidManifest.xml index fb8359b81318c..378bce63414d9 100644 --- a/core/res/AndroidManifest.xml +++ b/core/res/AndroidManifest.xml @@ -1901,6 +1901,13 @@ android:description="@string/permdesc_bindDeviceAdmin" android:protectionLevel="signature" /> + + + diff --git a/core/res/res/values/strings.xml b/core/res/res/values/strings.xml index b01b50e98ca01..8743119ad8053 100644 --- a/core/res/res/values/strings.xml +++ b/core/res/res/values/strings.xml @@ -1020,6 +1020,12 @@ Allows the holder to send intents to a device administrator. Should never be needed for normal apps. + + add or remove a device admin + + Allows the holder to add or remove active device + administrators. Should never be needed for normal apps. + change screen orientation diff --git a/packages/Keyguard/AndroidManifest.xml b/packages/Keyguard/AndroidManifest.xml index 7d77c48b5636d..7039d6d27d52c 100644 --- a/packages/Keyguard/AndroidManifest.xml +++ b/packages/Keyguard/AndroidManifest.xml @@ -35,6 +35,7 @@ + diff --git a/services/java/com/android/server/DevicePolicyManagerService.java b/services/java/com/android/server/DevicePolicyManagerService.java index 7ecd2c0364e50..4c8100628805d 100644 --- a/services/java/com/android/server/DevicePolicyManagerService.java +++ b/services/java/com/android/server/DevicePolicyManagerService.java @@ -1043,7 +1043,7 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub { */ public void setActiveAdmin(ComponentName adminReceiver, boolean refreshing, int userHandle) { mContext.enforceCallingOrSelfPermission( - android.Manifest.permission.BIND_DEVICE_ADMIN, null); + android.Manifest.permission.MANAGE_DEVICE_ADMINS, null); enforceCrossUserPermission(userHandle); DevicePolicyData policy = getUserData(userHandle); @@ -1146,7 +1146,7 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub { return; } mContext.enforceCallingOrSelfPermission( - android.Manifest.permission.BIND_DEVICE_ADMIN, null); + android.Manifest.permission.MANAGE_DEVICE_ADMINS, null); } long ident = Binder.clearCallingIdentity(); try {