summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJean-Baptiste Queru <jbq@google.com>2009-07-01 15:27:28 -0700
committerJean-Baptiste Queru <jbq@google.com>2009-07-02 09:48:50 -0700
commitf0fa1cdc1a36cbe0abd57ef9cf9a636fd1d3e2c8 (patch)
treeac5dbc5660c3b95cdba814e82bd1700d436c8436
parent3c700a35be5ec8c4036e75abebf0e5d4bc878eff (diff)
downloadandroid_packages_providers_DownloadProvider-f0fa1cdc1a36cbe0abd57ef9cf9a636fd1d3e2c8.tar.gz
android_packages_providers_DownloadProvider-f0fa1cdc1a36cbe0abd57ef9cf9a636fd1d3e2c8.tar.bz2
android_packages_providers_DownloadProvider-f0fa1cdc1a36cbe0abd57ef9cf9a636fd1d3e2c8.zip
Fix crash in discardPurgeableFiles with proper selection syntax.
The basic crash is that this codepath was doing a query to the download provider without properly quoting its selection arguments (which is mandated by the download provider). A secondary crash is that the DESTINATION column wasn't readable. This fixes bug 1941125. Tested by force-calling discardPurgeableFiles for each download to /cache, locally adding a few debugging statements to be sure that the codepath was getting executed, and doing a market download.
-rw-r--r--docs/index.html1
-rw-r--r--src/com/android/providers/downloads/DownloadProvider.java1
-rw-r--r--src/com/android/providers/downloads/Helpers.java6
3 files changed, 5 insertions, 3 deletions
diff --git a/docs/index.html b/docs/index.html
index a073a004..0004b729 100644
--- a/docs/index.html
+++ b/docs/index.html
@@ -231,6 +231,7 @@ Here's the list of columns that can currently be read/queried, with comments:
<tr><td > <code>_DATA</code> </td><td > Probably should not be visible to applications. <b>WARNING</b> Security concern: This holds filenames, including those of private files. While file permissions are supposed to kick in and protect the files, hiding private filenames deeper in would probably be a reasonable idea. </td></tr>
<tr><td > <code>MIMETYPE</code> </td><td > Needs to be visible so that app can display the icon matching the mime type. Intended to be visible by 3rd-party download UIs. <b>TODO</b> Security TBD before we implement support for 3rd-party UIs. </td></tr>
<tr><td > <code>VISIBILITY</code> </td><td > Needs to be visible in case an app has both visible and invisible downloads. No obvious security concern. </td></tr>
+<tr><td > <code>DESTINATION</code> </td><td > Needs to be visible in case an app has multiple destinations and wants to distinguish between them. Also used internally by the download manager. No obvious security concern. </td></tr>
<tr><td > <code>STATUS</code> </td><td > Needs to be visible (1004). No obvious security concern. </td></tr>
<tr><td > <code>LAST_MODIFICATION</code> </td><td > Needs to be visible, e.g. so that apps can sort downloads by date of last activity, or discard old downloads. No obvious security concern. </td></tr>
<tr><td > <code>NOTIFICATION_PACKAGE</code> </td><td > Allows individual apps running under shared UIDs to identify their own downloads. No security concern: can be queried through package manager. </td></tr>
diff --git a/src/com/android/providers/downloads/DownloadProvider.java b/src/com/android/providers/downloads/DownloadProvider.java
index f7cdd51e..e5f25762 100644
--- a/src/com/android/providers/downloads/DownloadProvider.java
+++ b/src/com/android/providers/downloads/DownloadProvider.java
@@ -82,6 +82,7 @@ public final class DownloadProvider extends ContentProvider {
Downloads._DATA,
Downloads.MIMETYPE,
Downloads.VISIBILITY,
+ Downloads.DESTINATION,
Downloads.CONTROL,
Downloads.STATUS,
Downloads.LAST_MODIFICATION,
diff --git a/src/com/android/providers/downloads/Helpers.java b/src/com/android/providers/downloads/Helpers.java
index 7c6070f3..72be60ed 100644
--- a/src/com/android/providers/downloads/Helpers.java
+++ b/src/com/android/providers/downloads/Helpers.java
@@ -427,9 +427,9 @@ public class Helpers {
Downloads.CONTENT_URI,
null,
"( " +
- Downloads.STATUS + " = " + Downloads.STATUS_SUCCESS + " AND " +
- Downloads.DESTINATION + " = " + Downloads.DESTINATION_CACHE_PARTITION_PURGEABLE
- + " )",
+ Downloads.STATUS + " = '" + Downloads.STATUS_SUCCESS + "' AND " +
+ Downloads.DESTINATION + " = '" + Downloads.DESTINATION_CACHE_PARTITION_PURGEABLE
+ + "' )",
null,
Downloads.LAST_MODIFICATION);
if (cursor == null) {