summaryrefslogtreecommitdiffstats
path: root/services/core/java/com/android/server/PersistentDataBlockService.java
diff options
context:
space:
mode:
authorAndres Morales <anmorales@google.com>2014-08-04 16:35:15 -0700
committerAndres Morales <anmorales@google.com>2014-08-06 23:41:20 +0000
commit6429f313b4248a010bb197993bbdb16629459d69 (patch)
tree81f26a9d332e8d056802d5c510bfb600f5ddd823 /services/core/java/com/android/server/PersistentDataBlockService.java
parentaf046ab637715e420f714ab48ca4788056311609 (diff)
downloadframeworks_base-6429f313b4248a010bb197993bbdb16629459d69.zip
frameworks_base-6429f313b4248a010bb197993bbdb16629459d69.tar.gz
frameworks_base-6429f313b4248a010bb197993bbdb16629459d69.tar.bz2
Allow PersistentDataBlockService to be used with all users
Bug: 16795591 Change-Id: Id5e5dc5c26408752fe85f6f6fc2c67d9408b6a2a
Diffstat (limited to 'services/core/java/com/android/server/PersistentDataBlockService.java')
-rw-r--r--services/core/java/com/android/server/PersistentDataBlockService.java19
1 files changed, 12 insertions, 7 deletions
diff --git a/services/core/java/com/android/server/PersistentDataBlockService.java b/services/core/java/com/android/server/PersistentDataBlockService.java
index f71a18a..2896f60 100644
--- a/services/core/java/com/android/server/PersistentDataBlockService.java
+++ b/services/core/java/com/android/server/PersistentDataBlockService.java
@@ -23,6 +23,7 @@ import android.os.Binder;
import android.os.IBinder;
import android.os.RemoteException;
import android.os.SystemProperties;
+import android.os.UserHandle;
import android.service.persistentdata.IPersistentDataBlockService;
import android.util.Slog;
import com.android.internal.R;
@@ -66,8 +67,9 @@ public class PersistentDataBlockService extends SystemService {
private final Context mContext;
private final String mDataBlockFile;
- private final int mAllowedUid;
private final Object mLock = new Object();
+
+ private int mAllowedAppId = -1;
/*
* Separate lock for OEM unlock related operations as they can happen in parallel with regular
* block operations.
@@ -81,19 +83,22 @@ public class PersistentDataBlockService extends SystemService {
mContext = context;
mDataBlockFile = SystemProperties.get(PERSISTENT_DATA_BLOCK_PROP);
mBlockDeviceSize = -1; // Load lazily
- String allowedPackage = context.getResources()
+ mAllowedAppId = getAllowedAppId(UserHandle.USER_OWNER);
+ }
+
+
+ private int getAllowedAppId(int userHandle) {
+ String allowedPackage = mContext.getResources()
.getString(R.string.config_persistentDataPackageName);
PackageManager pm = mContext.getPackageManager();
int allowedUid = -1;
try {
- allowedUid = pm.getPackageUid(allowedPackage,
- Binder.getCallingUserHandle().getIdentifier());
+ allowedUid = pm.getPackageUid(allowedPackage, userHandle);
} catch (PackageManager.NameNotFoundException e) {
// not expected
Slog.e(TAG, "not able to find package " + allowedPackage, e);
}
-
- mAllowedUid = allowedUid;
+ return UserHandle.getAppId(allowedUid);
}
@Override
@@ -108,7 +113,7 @@ public class PersistentDataBlockService extends SystemService {
}
private void enforceUid(int callingUid) {
- if (callingUid != mAllowedUid) {
+ if (UserHandle.getAppId(callingUid) != mAllowedAppId) {
throw new SecurityException("uid " + callingUid + " not allowed to access PST");
}
}