Update StorageManagerService.mkdirs to translate sandboxed paths.
Fixes: 124407202 Test: atest cts/hostsidetests/appsecurity/src/android/appsecurity/cts/ExternalStorageHostTest.java Change-Id: I75e8b5ec47258e19b3ae1ea2e465966ed20ce152
This commit is contained in:
@@ -2961,7 +2961,9 @@ class StorageManagerService extends IStorageManager.Stub
|
||||
|
||||
@Override
|
||||
public void mkdirs(String callingPkg, String appPath) {
|
||||
final int userId = UserHandle.getUserId(Binder.getCallingUid());
|
||||
final int callingPid = Binder.getCallingPid();
|
||||
final int callingUid = Binder.getCallingUid();
|
||||
final int userId = UserHandle.getUserId(callingUid);
|
||||
final UserEnvironment userEnv = new UserEnvironment(userId);
|
||||
final String propertyName = "sys.user." + userId + ".ce_available";
|
||||
|
||||
@@ -2979,7 +2981,7 @@ class StorageManagerService extends IStorageManager.Stub
|
||||
// Validate that reported package name belongs to caller
|
||||
final AppOpsManager appOps = (AppOpsManager) mContext.getSystemService(
|
||||
Context.APP_OPS_SERVICE);
|
||||
appOps.checkPackage(Binder.getCallingUid(), callingPkg);
|
||||
appOps.checkPackage(callingUid, callingPkg);
|
||||
|
||||
File appFile = null;
|
||||
try {
|
||||
@@ -2998,11 +3000,13 @@ class StorageManagerService extends IStorageManager.Stub
|
||||
appPath = appPath + "/";
|
||||
}
|
||||
|
||||
final String systemPath = translateAppToSystem(appPath, callingPid, callingUid);
|
||||
|
||||
try {
|
||||
mVold.mkdirs(appPath);
|
||||
mVold.mkdirs(systemPath);
|
||||
return;
|
||||
} catch (Exception e) {
|
||||
throw new IllegalStateException("Failed to prepare " + appPath + ": " + e);
|
||||
throw new IllegalStateException("Failed to prepare " + systemPath + ": " + e);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user