summaryrefslogtreecommitdiff
path: root/gst-libs
diff options
context:
space:
mode:
authorJonathan Matthew <jonathan@d14n.org>2009-09-17 23:42:52 +1000
committerSebastian Dröge <sebastian.droege@collabora.co.uk>2009-09-17 17:00:10 +0200
commit6781c4c9c599561a3ca2f964ef9a60b653ee710d (patch)
tree88541d723bd8d111fcf61767effabf2704467885 /gst-libs
parent257dbccad49e4586fc633e52b68049ce6af40de8 (diff)
cddabasesrc: ignore URI fragments that look like device paths
Rhythmbox uses cdda:// URIs of the form cdda://track#device, which worked before the fix for bug #321532. Also adds a check for negative track numbers and some unit tests for URI parsing. Fixes bug #595454.
Diffstat (limited to 'gst-libs')
-rw-r--r--gst-libs/gst/cdda/gstcddabasesrc.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/gst-libs/gst/cdda/gstcddabasesrc.c b/gst-libs/gst/cdda/gstcddabasesrc.c
index 182aadff6..2e4ed579a 100644
--- a/gst-libs/gst/cdda/gstcddabasesrc.c
+++ b/gst-libs/gst/cdda/gstcddabasesrc.c
@@ -972,7 +972,10 @@ gst_cdda_base_src_uri_set_uri (GstURIHandler * handler, const gchar * uri)
location = uri + 7;
track_number = g_strrstr (location, "#");
src->uri_track = 0;
- if (track_number) {
+ /* FIXME 0.11: ignore URI fragments that look like device paths for
+ * the benefit of rhythmbox and possibly other applications.
+ */
+ if (track_number && track_number[1] != '/') {
gchar *device, *nuri = g_strdup (uri);
track_number = nuri + (track_number - uri);
@@ -989,7 +992,7 @@ gst_cdda_base_src_uri_set_uri (GstURIHandler * handler, const gchar * uri)
src->uri_track = strtol (location, NULL, 10);
}
- if (src->uri_track == 0)
+ if (src->uri_track < 1)
goto failed;
if (src->num_tracks > 0