wether there is a bug to parse ipv6 url or not?

garry.lgr nginx-forum at nginx.us
Thu Feb 17 11:01:57 MSK 2011


I'm reading the nginx0.9.1 source code. 
now I find a bug when I read the "ngx_parse_inet6_url" function at 914
line in ngx_inet.c. 
the code don't correctly get the length of port when parsing the url.
for example:
    the ipv6 url is :  "[::FFFF:129.144.52.38]:8080/index.html"
 
the code: plz see the red color part
    host = u->url.data + 1;
    last = u->url.data + u->url.len;

    p = ngx_strlchr(host, last, ']');

    if (p == NULL) {
        u->err = "invalid host";
        return NGX_ERROR;
    }

    if (last - p) {

        port = p + 1;

        uri = ngx_strlchr(port, last, '/');

        if (uri) {
            if (u->listen || !u->uri_part) {
                u->err = "invalid host";
                return NGX_ERROR;
            }

            u->uri.len = last - uri;
            u->uri.data = uri;
        }

        if (*port == ':') {
            port++;

            [color=#FF0033]len = last - port; //here......... last is
the end of url ,but not the position of 8080 [/color]
            ......
"

Posted at Nginx Forum: http://forum.nginx.org/read.php?2,176073,176073#msg-176073




More information about the nginx mailing list