From 6b0c7acd7f175552d90d1d73b9717ff347158e7d Mon Sep 17 00:00:00 2001 From: Andres Morales Date: Mon, 24 Nov 2014 14:14:54 -0800 Subject: [PATCH] Define permission for system apps to query size of block Allows ManagedProvisioning to determine whether there's a challenge and thus whether to disable NFC provisioning. Other implementation option: new hidden boolean API method. Can't think of benefit of new API method "isBlockInUse", other than doesn't leak PDB size and is more explicitly tied to the use case. Open to either impl if anyone has opinions on the matter. Bug: 18508767 Change-Id: I28d2eb5a0837ff85cb91f140b17ce1dd843fe9d6 --- core/res/AndroidManifest.xml | 6 ++++++ .../java/com/android/server/PersistentDataBlockService.java | 5 ++++- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/core/res/AndroidManifest.xml b/core/res/AndroidManifest.xml index 3aaecc7a84244..dec7f0790fdff 100644 --- a/core/res/AndroidManifest.xml +++ b/core/res/AndroidManifest.xml @@ -1130,6 +1130,12 @@ android:permissionGroup="android.permission-group.SYSTEM_TOOLS" android:protectionLevel="signature" /> + + + diff --git a/services/core/java/com/android/server/PersistentDataBlockService.java b/services/core/java/com/android/server/PersistentDataBlockService.java index 17edb5372cdd6..9d4cd99acf8e2 100644 --- a/services/core/java/com/android/server/PersistentDataBlockService.java +++ b/services/core/java/com/android/server/PersistentDataBlockService.java @@ -433,7 +433,10 @@ public class PersistentDataBlockService extends SystemService { @Override public int getDataBlockSize() { - enforceUid(Binder.getCallingUid()); + if (mContext.checkCallingPermission(Manifest.permission.ACCESS_PDB_STATE) + != PackageManager.PERMISSION_GRANTED) { + enforceUid(Binder.getCallingUid()); + } DataInputStream inputStream; try {