summaryrefslogtreecommitdiffstats
path: root/src/com/android/providers/downloads/Helpers.java
diff options
context:
space:
mode:
authorJeff Sharkey <jsharkey@android.com>2013-09-23 14:21:55 -0700
committerJeff Sharkey <jsharkey@android.com>2013-09-23 14:25:50 -0700
commitc067c8be21dc4a6dc5f49b2b1aed7f91aab47063 (patch)
treea1ed113bae539117db084f51f579ed78fbd19d3b /src/com/android/providers/downloads/Helpers.java
parente0b9b881187362aea61249952a913d794834b728 (diff)
downloadandroid_packages_providers_DownloadProvider-c067c8be21dc4a6dc5f49b2b1aed7f91aab47063.tar.gz
android_packages_providers_DownloadProvider-c067c8be21dc4a6dc5f49b2b1aed7f91aab47063.tar.bz2
android_packages_providers_DownloadProvider-c067c8be21dc4a6dc5f49b2b1aed7f91aab47063.zip
Allow saving to Downloads.
Add column to mark downloads as being writable, and allow documents to be created under Downloads backend. Update database when writing is finished, and generate unique filenames when they already exist. Check canonical path on incoming _DATA paths. Bug: 10667164, 10892621, 10893268 Change-Id: I8c203b96ff042a895b58686903fcd07fc755a00f
Diffstat (limited to 'src/com/android/providers/downloads/Helpers.java')
-rw-r--r--src/com/android/providers/downloads/Helpers.java10
1 files changed, 9 insertions, 1 deletions
diff --git a/src/com/android/providers/downloads/Helpers.java b/src/com/android/providers/downloads/Helpers.java
index 33205557..aa763de2 100644
--- a/src/com/android/providers/downloads/Helpers.java
+++ b/src/com/android/providers/downloads/Helpers.java
@@ -16,6 +16,8 @@
package com.android.providers.downloads;
+import static com.android.providers.downloads.Constants.TAG;
+
import android.content.Context;
import android.net.Uri;
import android.os.Environment;
@@ -342,7 +344,13 @@ public class Helpers {
* Checks whether the filename looks legitimate
*/
static boolean isFilenameValid(String filename, File downloadsDataDir) {
- filename = filename.replaceFirst("/+", "/"); // normalize leading slashes
+ try {
+ filename = new File(filename).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());