Merge "Determine pass_through mount mode based on UID."

This commit is contained in:
Martijn Coenen
2019-12-04 04:10:00 +00:00
committed by Android (Google) Code Review

View File

@@ -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;
}