From 0b6da5362d5cf8c62bad2a8c35aabb00cbf7d976 Mon Sep 17 00:00:00 2001 From: Sudheer Shanka Date: Wed, 9 Jan 2019 12:06:51 -0800 Subject: Create a new MOUNT_EXTERNAL_LEGACY storage mode. Apps that are already installed on the device before isolated_storage feature is enabled will be granted MOUNT_EXTERNAL_LEGACY mode. In this mode, /mnt/runtime/write will be mounted at /storage giving them same level of access as in P. A new mount directory /mnt/runtime/full is also created which will be used for mounting at /storage for apps started with MOUNT_EXTERNAL_FULL mode. This will allow apps with WRITE_MEDIA_STORAGE permission to read/write anywhere on the secondary devices without needing to bypass sdcardfs. Bug: 121277410 Test: manual Test: atest android.appsecurity.cts.ExternalStorageHostTest Change-Id: I4ec73276d7c586ae4afc482580d1eb8ee03d5be1 --- core/java/android/os/ZygoteProcess.java | 2 ++ core/java/com/android/internal/os/Zygote.java | 5 +++++ core/java/com/android/internal/os/ZygoteConnection.java | 4 +++- 3 files changed, 10 insertions(+), 1 deletion(-) (limited to 'core/java') diff --git a/core/java/android/os/ZygoteProcess.java b/core/java/android/os/ZygoteProcess.java index 99a85eaefe53..ec7782177c73 100644 --- a/core/java/android/os/ZygoteProcess.java +++ b/core/java/android/os/ZygoteProcess.java @@ -402,6 +402,8 @@ public class ZygoteProcess { argsForZygote.add("--mount-external-full"); } else if (mountExternal == Zygote.MOUNT_EXTERNAL_INSTALLER) { argsForZygote.add("--mount-external-installer"); + } else if (mountExternal == Zygote.MOUNT_EXTERNAL_LEGACY) { + argsForZygote.add("--mount-external-legacy"); } argsForZygote.add("--target-sdk-version=" + targetSdkVersion); diff --git a/core/java/com/android/internal/os/Zygote.java b/core/java/com/android/internal/os/Zygote.java index f5746ca65f5e..705bae4f24ef 100644 --- a/core/java/com/android/internal/os/Zygote.java +++ b/core/java/com/android/internal/os/Zygote.java @@ -81,6 +81,11 @@ public final class Zygote { public static final int MOUNT_EXTERNAL_READ = IVold.REMOUNT_MODE_READ; /** Read-write external storage should be mounted. */ public static final int MOUNT_EXTERNAL_WRITE = IVold.REMOUNT_MODE_WRITE; + /** + * Mount mode for apps that are already installed on the device before the isolated_storage + * feature is enabled. + */ + public static final int MOUNT_EXTERNAL_LEGACY = IVold.REMOUNT_MODE_LEGACY; /** * Mount mode for package installers which should give them access to * all obb dirs in addition to their package sandboxes diff --git a/core/java/com/android/internal/os/ZygoteConnection.java b/core/java/com/android/internal/os/ZygoteConnection.java index 5990d72d89b4..ced798cb6445 100644 --- a/core/java/com/android/internal/os/ZygoteConnection.java +++ b/core/java/com/android/internal/os/ZygoteConnection.java @@ -688,8 +688,10 @@ class ZygoteConnection { mountExternal = Zygote.MOUNT_EXTERNAL_WRITE; } else if (arg.equals("--mount-external-full")) { mountExternal = Zygote.MOUNT_EXTERNAL_FULL; - } else if (arg.equals("--mount-external-installer")) { + } else if (arg.equals("--mount-external-installer")) { mountExternal = Zygote.MOUNT_EXTERNAL_INSTALLER; + } else if (arg.equals("--mount-external-legacy")) { + mountExternal = Zygote.MOUNT_EXTERNAL_LEGACY; } else if (arg.equals("--query-abi-list")) { abiListQuery = true; } else if (arg.equals("--get-pid")) { -- cgit v1.2.3