Is the 607418-ipv6-addresses.diff patch still needed?

Cyril LAVIER cyril.lavier at davromaniak.eu
Tue Nov 8 11:17:43 UTC 2011


 Hi Mark.

 I think it can be removed.

 I'm compiling the 1.1.7 packages without the patch, and I will test it 
 after.

 If this patch is not needed anymore, I will apply the changes in the 
 SVN.

 Thanks for this remark.

 On Tue, 8 Nov 2011 11:05:07 +0000, Mark Alan wrote:
> Hello,
>
> The current version of the debianized Nginx code applies the
> attached 607418-ipv6-addresses.diff patch.
>
> Do you still see any need to apply this patch to the current
> nginx_1.1.7 code?
>
> Regards,
>
> M.
>
>
> ########  607418-ipv6-addresses.diff patch follows  ########
> Description: $host variable mis-parses IPv6 literal addresses from 
> HTTP
> Author: Steven Chamberlain <steven at pyro.eu.org>
> Debian-Bug: http://bugs.debian.org/607418
> Last-Update: 2010-12-30
>
> Index: trunk/src/http/ngx_http_request.c
> ===================================================================
> --- trunk.orig/src/http/ngx_http_request.c	2010-12-30
> 01:46:10.308926973 -0600 +++ trunk/src/http/ngx_http_request.c
> 2010-12-30 01:48:21.638927393 -0600 @@ -1650,11 +1650,12 @@
>  {
>      u_char      *h, ch;
>      size_t       i, last;
> -    ngx_uint_t   dot;
> +    ngx_uint_t   dot, in_brackets;
>
>      last = len;
>      h = *host;
>      dot = 0;
> +    in_brackets = 0;
>
>      for (i = 0; i < len; i++) {
>          ch = h[i];
> @@ -1670,11 +1671,27 @@
>
>          dot = 0;
>
> -        if (ch == ':') {
> +        if (ch == '[' && i == 0) {
> +            /* start of literal IPv6 address */
> +            in_brackets = 1;
> +            continue;
> +        }
> +
> +        /*
> +         * Inside square brackets, the colon is a delimeter for an
> IPv6 address.
> +         * Otherwise it comes before the port number, so remove it.
> +         */
> +        if (ch == ':' && !in_brackets) {
>              last = i;
>              continue;
>          }
>
> +        if (ch == ']') {
> +            /* end of literal IPv6 address */
> +            in_brackets = 0;
> +            continue;
> +        }
> +
>          if (ngx_path_separator(ch) || ch == '\0') {
>              return 0;
>          }
> @@ -1684,6 +1701,11 @@
>          }
>      }
>
> +    if (in_brackets) {
> +        /* missing the closing square bracket for IPv6 address */
> +        return 0;
> +    }
> +
>      if (dot) {
>          last--;
>      }
>
> _______________________________________________
> nginx mailing list
> nginx at nginx.org
> http://mailman.nginx.org/mailman/listinfo/nginx

-- 
 Cyril "Davromaniak" Lavier



More information about the nginx mailing list