summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorMarco Nelissen <marcone@google.com>2013-10-31 09:30:27 -0700
committerAndroid Git Automerger <android-git-automerger@android.com>2013-10-31 09:30:27 -0700
commit1c9a1d6be197e9d266e20039dea4f14694631a4e (patch)
tree6080e43ec6f11d91587c07b46cb41e014e3d9403 /src
parente2c8247857cd266650a237b26c74a19bda915ea8 (diff)
parent4df227f90943e9239f61b120d81d94dfe54f949f (diff)
downloadandroid_packages_providers_MediaProvider-1c9a1d6be197e9d266e20039dea4f14694631a4e.tar.gz
android_packages_providers_MediaProvider-1c9a1d6be197e9d266e20039dea4f14694631a4e.tar.bz2
android_packages_providers_MediaProvider-1c9a1d6be197e9d266e20039dea4f14694631a4e.zip
am 4df227f9: am 6ab6373d: Check granted permissions for all paths
* commit '4df227f90943e9239f61b120d81d94dfe54f949f': Check granted permissions for all paths
Diffstat (limited to 'src')
-rwxr-xr-xsrc/com/android/providers/media/MediaProvider.java21
1 files changed, 14 insertions, 7 deletions
diff --git a/src/com/android/providers/media/MediaProvider.java b/src/com/android/providers/media/MediaProvider.java
index 974b0dd6..498cf828 100755
--- a/src/com/android/providers/media/MediaProvider.java
+++ b/src/com/android/providers/media/MediaProvider.java
@@ -4620,10 +4620,13 @@ public class MediaProvider extends ContentProvider {
throw new IllegalArgumentException("Unable to resolve canonical path for " + file, e);
}
+ Context c = getContext();
+ boolean readGranted =
+ (c.checkCallingOrSelfUriPermission(uri, Intent.FLAG_GRANT_READ_URI_PERMISSION)
+ == PackageManager.PERMISSION_GRANTED);
+
if (path.startsWith(sExternalPath) || path.startsWith(sLegacyPath)) {
- Context c = getContext();
- if (c.checkCallingOrSelfUriPermission(uri, Intent.FLAG_GRANT_READ_URI_PERMISSION)
- != PackageManager.PERMISSION_GRANTED) {
+ if (!readGranted) {
c.enforceCallingOrSelfPermission(
READ_EXTERNAL_STORAGE, "External path: " + path);
}
@@ -4637,15 +4640,19 @@ public class MediaProvider extends ContentProvider {
}
} else if (path.startsWith(sCachePath)) {
- getContext().enforceCallingOrSelfPermission(
- ACCESS_CACHE_FILESYSTEM, "Cache path: " + path);
+ if (!readGranted) {
+ c.enforceCallingOrSelfPermission(
+ ACCESS_CACHE_FILESYSTEM, "Cache path: " + path);
+ }
} 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);
+ if (!readGranted) {
+ c.enforceCallingOrSelfPermission(
+ READ_EXTERNAL_STORAGE, "External path: " + path);
+ }
} else {
checkWorldReadAccess(path);
}