summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMartijn Coenen <maco@google.com>2019-12-04 04:10:00 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2019-12-04 04:10:00 +0000
commit023e1e453bb97c683be69d25f97510f8ddb96b48 (patch)
treef830c1b3aaeef7b47339efe0a5fe4c22e1f5fd7b
parent65d3c6d9177fec9880ba666e79206b30b10834d6 (diff)
parent44db1aca43ebb02b04b46cca2e5c09e0ff025c7f (diff)
Merge "Determine pass_through mount mode based on UID."
-rw-r--r--services/core/java/com/android/server/StorageManagerService.java11
1 files changed, 6 insertions, 5 deletions
diff --git a/services/core/java/com/android/server/StorageManagerService.java b/services/core/java/com/android/server/StorageManagerService.java
index 9d1eb6cb5326..d4889ea9f880 100644
--- a/services/core/java/com/android/server/StorageManagerService.java
+++ b/services/core/java/com/android/server/StorageManagerService.java
@@ -355,8 +355,7 @@ class StorageManagerService extends IStorageManager.Stub
@GuardedBy("mLock")
private String mMoveTargetUuid;
- @Nullable
- private volatile String mMediaStoreAuthorityPackageName = null;
+ private volatile int mMediaStoreAuthorityAppId = -1;
private volatile int mCurrentUserId = UserHandle.USER_SYSTEM;
@@ -1725,7 +1724,7 @@ class StorageManagerService extends IStorageManager.Stub
| PackageManager.MATCH_DIRECT_BOOT_UNAWARE,
UserHandle.getUserId(UserHandle.USER_SYSTEM));
if (provider != null) {
- mMediaStoreAuthorityPackageName = provider.packageName;
+ mMediaStoreAuthorityAppId = UserHandle.getAppId(provider.applicationInfo.uid);
}
try {
@@ -3752,8 +3751,10 @@ class StorageManagerService extends IStorageManager.Stub
return Zygote.MOUNT_EXTERNAL_NONE;
}
- if (mIsFuseEnabled && packageName.equals(mMediaStoreAuthorityPackageName)) {
- // Determine if caller requires pass_through mount
+ if (mIsFuseEnabled && mMediaStoreAuthorityAppId == UserHandle.getAppId(uid)) {
+ // Determine if caller requires pass_through mount; note that we do this for
+ // all processes that share a UID with MediaProvider; but this is fine, since
+ // those processes anyway share the same rights as MediaProvider.
return Zygote.MOUNT_EXTERNAL_PASS_THROUGH;
}