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

Commit 901f1d60 authored by Shubham Basu's avatar Shubham Basu
Browse files

fix: redirect to root to block access

bug:200034476
test: manual
Change-Id: Idc4d18d15cec389a6756388f3dc1c752de121bf9

Change-Id: Ib8bc1afdb2e26241ecb564e8f14d22d0f8a4fb61
parent a6ae4b19
Loading
Loading
Loading
Loading
+13 −0
Original line number Diff line number Diff line
@@ -62,9 +62,12 @@ import com.android.documentsui.queries.SearchViewManager;
import com.android.documentsui.roots.ProvidersAccess;
import com.android.documentsui.services.FileOperationService;

import com.android.documentsui.util.VersionUtils;
import java.util.Arrays;
import java.util.Locale;
import java.util.concurrent.Executor;

import java.util.regex.Pattern;
import javax.annotation.Nullable;

/**
@@ -78,6 +81,8 @@ class ActionHandler<T extends FragmentActivity & Addons> extends AbstractActionH
    private final ActivityConfig mConfig;
    private final LastAccessedStorage mLastAccessed;
    private final UserIdManager mUserIdManager;
    private final static Pattern PATTERN_BLOCK_PATH = Pattern.compile(
        ".*:android\\/(?:data|obb|sandbox)$");

    private UpdatePickResultTask mUpdatePickResultTask;

@@ -157,6 +162,14 @@ class ActionHandler<T extends FragmentActivity & Addons> extends AbstractActionH
    private boolean launchToInitialUri(Intent intent) {
        Uri uri = intent.getParcelableExtra(DocumentsContract.EXTRA_INITIAL_URI);
        if (uri != null) {
            // In android S and above if path contains Android/data, Android/obb
            // or Android/sandbox redirect to the root for which
            // FLAG_DIR_BLOCKS_OPEN_DOCUMENT_TREE is already set
            if(Shared.shouldRestrictStorageAccessFramework(mActivity)
                && (PATTERN_BLOCK_PATH.matcher(uri.getPath().toLowerCase(Locale.ROOT)).matches())){
                loadDeviceRoot();
                return true;
            }
            if (DocumentsContract.isRootUri(mActivity, uri)) {
                loadRoot(uri, UserId.DEFAULT_USER);
                return true;