diff --git a/services/core/java/com/android/server/StorageManagerService.java b/services/core/java/com/android/server/StorageManagerService.java index ada3947477de6..a0b47d5a4b7e3 100644 --- a/services/core/java/com/android/server/StorageManagerService.java +++ b/services/core/java/com/android/server/StorageManagerService.java @@ -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); } }