vlc | branch: master | Rémi Denis-Courmont <[email protected]> | Tue Aug 21 16:04:51 2012 +0300| [121973c11e16a9b359e93f109861c83d4a897e2c] | committer: Rémi Denis-Courmont
vlc_UrlParse(): fix handling of port numbers Pointed-out-by: Aurélien Nephtali <[email protected]> > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=121973c11e16a9b359e93f109861c83d4a897e2c --- src/text/url.c | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/src/text/url.c b/src/text/url.c index 1ccec85..42473ff 100644 --- a/src/text/url.c +++ b/src/text/url.c @@ -454,24 +454,28 @@ void vlc_UrlParse (vlc_url_t *restrict url, const char *str, unsigned char opt) } /* Host name */ - if (*cur == '[' && (next = strstr (cur, "]:")) != NULL) - { - /* IPv6 numeral within brackets */ + if (*cur == '[' && (next = strrchr (cur, ']')) != NULL) + { /* Try IPv6 numeral within brackets */ *(next++) = '\0'; url->psz_host = strdup (cur + 1); + + if (*next == ':') + next++; + else + next = NULL; } else { - url->psz_host = vlc_idna_to_ascii (cur); next = strchr (cur, ':'); + if (next != NULL) + *(next++) = '\0'; + + url->psz_host = vlc_idna_to_ascii (cur); } /* Port number */ if (next != NULL) - { - assert (*next == ':'); - url->i_port = atoi (next + 1); - } + url->i_port = atoi (next); if (url->psz_path != NULL) *url->psz_path = '/'; /* restore leading slash */ _______________________________________________ vlc-commits mailing list [email protected] http://mailman.videolan.org/listinfo/vlc-commits
