diff options
author | Jonathan Matthew <jonathan@d14n.org> | 2009-09-17 23:42:52 +1000 |
---|---|---|
committer | Sebastian Dröge <sebastian.droege@collabora.co.uk> | 2009-09-17 17:00:10 +0200 |
commit | 6781c4c9c599561a3ca2f964ef9a60b653ee710d (patch) | |
tree | 88541d723bd8d111fcf61767effabf2704467885 /gst-libs | |
parent | 257dbccad49e4586fc633e52b68049ce6af40de8 (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.c | 7 |
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 |