diff options
author | Jean-Baptiste Queru <jbq@google.com> | 2009-07-01 15:27:28 -0700 |
---|---|---|
committer | Jean-Baptiste Queru <jbq@google.com> | 2009-07-02 09:48:50 -0700 |
commit | f0fa1cdc1a36cbe0abd57ef9cf9a636fd1d3e2c8 (patch) | |
tree | ac5dbc5660c3b95cdba814e82bd1700d436c8436 | |
parent | 3c700a35be5ec8c4036e75abebf0e5d4bc878eff (diff) | |
download | android_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.html | 1 | ||||
-rw-r--r-- | src/com/android/providers/downloads/DownloadProvider.java | 1 | ||||
-rw-r--r-- | src/com/android/providers/downloads/Helpers.java | 6 |
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) { |