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:
Sudheer Shanka
2019-02-28 11:15:58 -08:00
parent ea548cc3ab
commit a63bfb300d

View File

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