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

Commit e9fcabca authored by Jeff Sharkey's avatar Jeff Sharkey
Browse files

Fix isExternalStorageSandboxed() bug.

It needs to use the same STOPSHIP logic for consistency with the
two other enforcement sites across the OS.

Bug: 129487770
Test: atest android.appsecurity.cts.ExternalStorageHostTest
Change-Id: I7a3fa836e0795912c264aae58a55472ffae3d8c3
parent dd07ae57
Loading
Loading
Loading
Loading
+9 −2
Original line number Diff line number Diff line
@@ -1147,9 +1147,16 @@ public class Environment {
    public static boolean isExternalStorageSandboxed(@NonNull File path) {
        final Context context = AppGlobals.getInitialApplication();
        final AppOpsManager appOps = context.getSystemService(AppOpsManager.class);
        return appOps.noteOpNoThrow(AppOpsManager.OP_LEGACY_STORAGE,

        final boolean hasLegacy = appOps.noteOpNoThrow(AppOpsManager.OP_LEGACY_STORAGE,
                context.getApplicationInfo().uid,
                context.getPackageName()) != AppOpsManager.MODE_ALLOWED;
                context.getPackageName()) == AppOpsManager.MODE_ALLOWED;

        // STOPSHIP: only use app-op once permission model has fully landed
        final boolean requestedLegacy = !AppGlobals.getInitialApplication().getApplicationInfo()
                .isExternalStorageSandboxAllowed();

        return !(hasLegacy || requestedLegacy);
    }

    static File getDirectory(String variableName, String defaultPath) {