summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarco Nelissen <marcone@google.com>2013-10-09 19:41:26 -0700
committerAndroid Git Automerger <android-git-automerger@android.com>2013-10-09 19:41:26 -0700
commitb75caaed46e895f4f9f1d545789dca0c199fa209 (patch)
tree18664acebd50097a2ea2be868b304f47cd5614ed
parentc015f8e1eddbe12f94023e58235f76e7f688c745 (diff)
parent28680dd8a84f80666bf0ec1361c072790ca4a69e (diff)
downloadMediaProvider-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.java13
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
*/