Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit a63bfb30 authored by Sudheer Shanka's avatar Sudheer Shanka
Browse files

Update StorageManagerService.mkdirs to translate sandboxed paths.

Fixes: 124407202
Test: atest cts/hostsidetests/appsecurity/src/android/appsecurity/cts/ExternalStorageHostTest.java
Change-Id: I75e8b5ec47258e19b3ae1ea2e465966ed20ce152
parent ea548cc3
Loading
Loading
Loading
Loading
+8 −4
Original line number Diff line number Diff line
@@ -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);
            }
        }