summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorSteve Howard <showard@google.com>2010-07-27 17:02:14 -0700
committerSteve Howard <showard@google.com>2010-07-27 17:13:15 -0700
commitf6b4c24b4a876daa3f4e91d6da418983222b9dfd (patch)
treeed70f4c5c2d622644dffb5b14a8b96c7626243f7 /src
parente6a05a1aa4697440e9630d12b741b3bae321fe49 (diff)
downloadandroid_packages_providers_DownloadProvider-f6b4c24b4a876daa3f4e91d6da418983222b9dfd.tar.gz
android_packages_providers_DownloadProvider-f6b4c24b4a876daa3f4e91d6da418983222b9dfd.tar.bz2
android_packages_providers_DownloadProvider-f6b4c24b4a876daa3f4e91d6da418983222b9dfd.zip
Fix bug with closing output stream for external downloads.
I added a unit test to cover this, and it caught another issue with disallowing external destinations outside of the default downloads directory (which are now allowed with the new API). Change-Id: I4df6442bebb06458ad28c85f6bc8cbcbf3ce67a1
Diffstat (limited to 'src')
-rw-r--r--src/com/android/providers/downloads/DownloadThread.java1
-rw-r--r--src/com/android/providers/downloads/Helpers.java7
2 files changed, 4 insertions, 4 deletions
diff --git a/src/com/android/providers/downloads/DownloadThread.java b/src/com/android/providers/downloads/DownloadThread.java
index 6cb409ef..56894feb 100644
--- a/src/com/android/providers/downloads/DownloadThread.java
+++ b/src/com/android/providers/downloads/DownloadThread.java
@@ -318,6 +318,7 @@ public class DownloadThread extends Thread {
// close the file
if (state.mStream != null) {
state.mStream.close();
+ state.mStream = null;
}
} catch (IOException ex) {
if (Constants.LOGV) {
diff --git a/src/com/android/providers/downloads/Helpers.java b/src/com/android/providers/downloads/Helpers.java
index 58ab578a..f2988954 100644
--- a/src/com/android/providers/downloads/Helpers.java
+++ b/src/com/android/providers/downloads/Helpers.java
@@ -513,10 +513,9 @@ public class Helpers {
* Checks whether the filename looks legitimate
*/
public static boolean isFilenameValid(String filename) {
- File dir = new File(filename).getParentFile();
- return dir.equals(Environment.getDownloadCacheDirectory())
- || dir.equals(new File(Environment.getExternalStorageDirectory()
- + Constants.DEFAULT_DL_SUBDIR));
+ filename = filename.replaceFirst("/+", "/"); // normalize leading slashes
+ return filename.startsWith(Environment.getDownloadCacheDirectory().toString())
+ || filename.startsWith(Environment.getExternalStorageDirectory().toString());
}
/**