From 87b5ad0dfc2cca4c35337f85bc0f5b89fe462d6a Mon Sep 17 00:00:00 2001 From: =?utf8?q?Sebastian=20Dr=C3=B6ge?= Date: Wed, 11 Nov 2015 16:11:14 +0100 Subject: [PATCH] mpdparser: Also allow '/' in RepresentationID Used by http://www.bok.net/dash/tears_of_steel/cleartext/stream.mpd https://bugzilla.gnome.org/show_bug.cgi?id=757903 --- ext/dash/gstmpdparser.c | 20 ++++++++++++++------ tests/check/elements/dash_mpd.c | 5 ++++- 2 files changed, 18 insertions(+), 7 deletions(-) diff --git a/ext/dash/gstmpdparser.c b/ext/dash/gstmpdparser.c index 29c2cf7..7b0e438 100644 --- a/ext/dash/gstmpdparser.c +++ b/ext/dash/gstmpdparser.c @@ -3138,7 +3138,7 @@ gst_mpdparser_validate_rfc1738_url (const char *s) { while (*s) { if (!strchr - (";:@&=aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ0123456789$-_.+!*'(),%", + (";:@&=aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ0123456789$-_.+!*'(),%/", *s)) return FALSE; if (*s == '%') { @@ -3195,11 +3195,9 @@ gst_mpdparser_build_URL_from_template (const gchar * url_template, continue; if (!g_strcmp0 (token, "RepresentationID")) { - if (!gst_mpdparser_validate_rfc1738_url (id)) { - GST_WARNING ("String '%s' has characters invalid in an RFC 1738 URL", - id); - goto invalid_format; - } + if (!gst_mpdparser_validate_rfc1738_url (id)) + goto invalid_representation_id; + tokens[i] = g_strdup_printf ("%s", id); g_free (token); } else if (!strncmp (token, "Number", 6)) { @@ -3260,6 +3258,16 @@ invalid_format: return NULL; } +invalid_representation_id: + { + GST_ERROR + ("Representation ID string '%s' has characters invalid in an RFC 1738 URL", + id); + + g_strfreev (tokens); + + return NULL; + } } guint diff --git a/tests/check/elements/dash_mpd.c b/tests/check/elements/dash_mpd.c index 1f4ae3b..76bf9d2 100644 --- a/tests/check/elements/dash_mpd.c +++ b/tests/check/elements/dash_mpd.c @@ -4912,7 +4912,7 @@ GST_END_TEST; GST_START_TEST (dash_mpdparser_rfc1738_strings) { - fail_unless (gst_mpdparser_validate_rfc1738_url ("/") == FALSE); + fail_unless (gst_mpdparser_validate_rfc1738_url ("/") == TRUE); fail_unless (gst_mpdparser_validate_rfc1738_url (" ") == FALSE); fail_unless (gst_mpdparser_validate_rfc1738_url ("aaaaaaaa ") == FALSE); @@ -4922,6 +4922,9 @@ GST_START_TEST (dash_mpdparser_rfc1738_strings) (";:@&=aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ0123456789$-_.+!*'(),%AA") == TRUE); fail_unless (gst_mpdparser_validate_rfc1738_url + (";:@&=aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ0123456789$-_.+!*'(),/%AA") + == TRUE); + fail_unless (gst_mpdparser_validate_rfc1738_url (";:@&=aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ0123456789$-_.+!*'(),% ") == FALSE); fail_unless (gst_mpdparser_validate_rfc1738_url ("%AA") == TRUE); -- 2.7.4