Nginx-ru mailing list archive (nginx-ru@sysoev.ru)
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Баг парсинга ip адресов п ри сборке с --with-ipv6
Hello!
On Tue, Apr 12, 2011 at 09:57:31PM -0400, INF[SZ] wrote:
> При включении опции сборки --with-ipv6 и
> внесении в локацию ip адреса в котором
> забыта точка между 2 и 3 октетом получаю
> ошибку сегментирования
>
> Например
>
> location / {
>
> root /usr/share/nginx/html;
>
> index index.html index.htm;
>
> allow 80.24797.12;
>
> }
>
> nginx -t
> ошибка сегментирования
>
> при сборке Nginx без поддержки ipv6 при том
> же конфиге парсинг проходит удачно и на
> выходе как и положено получаю ошибку:
>
> nginx: [emerg]: invalid parameter "80.24797.12" in
> /etc/nginx/nginx.conf:54
> nginx: configuration file /etc/nginx/nginx.conf test failed
>
>
> Проверял на Nginx 0.8, 0.9, 1.0 ветках.
Спасибо. Патч прилагается.
Maxim Dounin
# HG changeset patch
# User Maxim Dounin <mdounin@xxxxxxxxxx>
# Date 1302694009 -14400
# Node ID c0045a9cf3218bd4f77ecb8c0a5e75ad47a436f9
# Parent 00d13b6d4ebd225f94a2e2a3afa7dbd3ddfe4ed7
Fix ipv6 address parsing.
Parsing icorrectly formated addresses caused segmentation fault in some
cases, e.g. as in
allow 80.24797.12;
(note missing dot - this is not valid ipv4 address and hence nginx will
attempt to parse it as ipv6 one if configured with ipv6), or
listen [127.0.0.1]:8080;
(note ipv4 address instead of ipv6 one in square brackets).
See here for original report:
http://forum.nginx.org/read.php?21,190741,190741#msg-190741
diff --git a/src/core/ngx_inet.c b/src/core/ngx_inet.c
--- a/src/core/ngx_inet.c
+++ b/src/core/ngx_inet.c
@@ -110,7 +110,7 @@ ngx_inet6_addr(u_char *p, size_t len, u_
}
if (c == '.' && nibbles) {
- if (n < 2) {
+ if (n < 2 || digit == NULL) {
return NGX_ERROR;
}
_______________________________________________
nginx-ru mailing list
nginx-ru@xxxxxxxxx
http://nginx.org/mailman/listinfo/nginx-ru
|