mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-11-27 12:11:13 +00:00
hlsdemux: Fix for URLs that contain a '/' in the query parameter
If the URL for the master manifest files contains a '/' character in the query parameter (for example http://example.net/1054559_h264_1500k.mp4/master.m3u8?acl=/*1054559_h264_1500k.mp4), hlsdemux is incorrectly converting the relative URLs of the media playlists in to absolute URLs. It is incorrectly using the last '/' it finds in the URL. According to RFC3986 the '/' character is allowed in the query part of the URL. https://bugzilla.gnome.org/show_bug.cgi?id=725137
This commit is contained in:
parent
966fb81db0
commit
91775a1abd
1 changed files with 9 additions and 1 deletions
|
@ -771,7 +771,15 @@ uri_join (const gchar * uri1, const gchar * uri2)
|
||||||
uri_copy = g_strdup (uri1);
|
uri_copy = g_strdup (uri1);
|
||||||
if (uri2[0] != '/') {
|
if (uri2[0] != '/') {
|
||||||
/* uri2 is a relative uri2 */
|
/* uri2 is a relative uri2 */
|
||||||
|
/* look for query params */
|
||||||
|
tmp = g_utf8_strchr (uri_copy, -1, '?');
|
||||||
|
if (tmp) {
|
||||||
|
/* find last / char, ignoring query params */
|
||||||
|
tmp = g_utf8_strrchr (uri_copy, tmp - uri_copy, '/');
|
||||||
|
} else {
|
||||||
|
/* find last / char in URL */
|
||||||
tmp = g_utf8_strrchr (uri_copy, -1, '/');
|
tmp = g_utf8_strrchr (uri_copy, -1, '/');
|
||||||
|
}
|
||||||
if (!tmp) {
|
if (!tmp) {
|
||||||
GST_WARNING ("Can't build a valid uri_copy");
|
GST_WARNING ("Can't build a valid uri_copy");
|
||||||
goto out;
|
goto out;
|
||||||
|
|
Loading…
Reference in a new issue