summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJeff Sharkey <jsharkey@android.com>2013-09-25 14:45:13 -0700
committerAndroid Git Automerger <android-git-automerger@android.com>2013-09-25 14:45:13 -0700
commita1adb3779505eab155f954481c2db1bcaf0af48a (patch)
treed103aa7d7ccab9c06aa3f2b315ba7e830c9b0233
parent7e2204a399c7db93a88b16d4a92470dbbe87885d (diff)
parent5f09eb5a4a2542523041cc28d4d3562e0cadaead (diff)
downloadandroid_packages_providers_DownloadProvider-a1adb3779505eab155f954481c2db1bcaf0af48a.tar.gz
android_packages_providers_DownloadProvider-a1adb3779505eab155f954481c2db1bcaf0af48a.tar.bz2
android_packages_providers_DownloadProvider-a1adb3779505eab155f954481c2db1bcaf0af48a.zip
am 5f09eb5a: am 776e4f79: Always check against canonical paths.
* commit '5f09eb5a4a2542523041cc28d4d3562e0cadaead': Always check against canonical paths.
-rw-r--r--src/com/android/providers/downloads/Helpers.java16
1 files changed, 13 insertions, 3 deletions
diff --git a/src/com/android/providers/downloads/Helpers.java b/src/com/android/providers/downloads/Helpers.java
index aa763de2..013faf27 100644
--- a/src/com/android/providers/downloads/Helpers.java
+++ b/src/com/android/providers/downloads/Helpers.java
@@ -344,16 +344,26 @@ public class Helpers {
* Checks whether the filename looks legitimate
*/
static boolean isFilenameValid(String filename, File downloadsDataDir) {
+ final String[] whitelist;
try {
filename = new File(filename).getCanonicalPath();
+ whitelist = new String[] {
+ downloadsDataDir.getCanonicalPath(),
+ Environment.getDownloadCacheDirectory().getCanonicalPath(),
+ Environment.getExternalStorageDirectory().getCanonicalPath(),
+ };
} catch (IOException e) {
Log.w(TAG, "Failed to resolve canonical path: " + e);
return false;
}
- return filename.startsWith(Environment.getDownloadCacheDirectory().toString())
- || filename.startsWith(downloadsDataDir.toString())
- || filename.startsWith(Environment.getExternalStorageDirectory().toString());
+ for (String test : whitelist) {
+ if (filename.startsWith(test)) {
+ return true;
+ }
+ }
+
+ return false;
}
/**