diff options
author | Marco Nelissen <marcone@google.com> | 2013-10-31 09:30:27 -0700 |
---|---|---|
committer | Android Git Automerger <android-git-automerger@android.com> | 2013-10-31 09:30:27 -0700 |
commit | 1c9a1d6be197e9d266e20039dea4f14694631a4e (patch) | |
tree | 6080e43ec6f11d91587c07b46cb41e014e3d9403 /src | |
parent | e2c8247857cd266650a237b26c74a19bda915ea8 (diff) | |
parent | 4df227f90943e9239f61b120d81d94dfe54f949f (diff) | |
download | android_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-x | src/com/android/providers/media/MediaProvider.java | 21 |
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); } |