diff options
author | Marco Nelissen <marcone@google.com> | 2013-10-09 19:41:26 -0700 |
---|---|---|
committer | Android Git Automerger <android-git-automerger@android.com> | 2013-10-09 19:41:26 -0700 |
commit | b75caaed46e895f4f9f1d545789dca0c199fa209 (patch) | |
tree | 18664acebd50097a2ea2be868b304f47cd5614ed | |
parent | c015f8e1eddbe12f94023e58235f76e7f688c745 (diff) | |
parent | 28680dd8a84f80666bf0ec1361c072790ca4a69e (diff) | |
download | MediaProvider-b75caaed46e895f4f9f1d545789dca0c199fa209.tar.gz |
am 28680dd8: am 39955731: am dc906ab2: Fix access to secondary storage
* commit '28680dd8a84f80666bf0ec1361c072790ca4a69e':
Fix access to secondary storage
-rw-r--r-- | src/com/android/providers/media/MediaProvider.java | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/src/com/android/providers/media/MediaProvider.java b/src/com/android/providers/media/MediaProvider.java index 9680e4d12..b68fb6e82 100644 --- a/src/com/android/providers/media/MediaProvider.java +++ b/src/com/android/providers/media/MediaProvider.java @@ -4416,6 +4416,10 @@ public class MediaProvider extends ContentProvider { } else if (isWrite) { // don't write to non-cache, non-sdcard files. throw new FileNotFoundException("Can't access " + file); + } else if (isSecondaryExternalPath(path)) { + // read access is OK with the appropriate permission + getContext().enforceCallingOrSelfPermission( + READ_EXTERNAL_STORAGE, "External path: " + path); } else { checkWorldReadAccess(path); } @@ -4423,6 +4427,15 @@ public class MediaProvider extends ContentProvider { return ParcelFileDescriptor.open(file, modeBits); } + private boolean isSecondaryExternalPath(String path) { + for (int i = mExternalStoragePaths.length - 1; i >= 0; --i) { + if (path.startsWith(mExternalStoragePaths[i])) { + return true; + } + } + return false; + } + /** * Check whether the path is a world-readable file */ |