Mercurial > hg > nginx-vendor-1-0
changeset 124:12acc273e340 NGINX_0_3_9
nginx 0.3.9
*) Bugfix: nginx considered URI as unsafe if two any symbols was
between two slashes; bug appeared in 0.3.8.
author | Igor Sysoev <http://sysoev.ru> |
---|---|
date | Thu, 10 Nov 2005 00:00:00 +0300 |
parents | b69cefc48a82 |
children | 97504de1f89e |
files | CHANGES CHANGES.ru src/core/nginx.h src/http/ngx_http_parse.c |
diffstat | 4 files changed, 19 insertions(+), 5 deletions(-) [+] |
line wrap: on
line diff
--- a/CHANGES +++ b/CHANGES @@ -1,3 +1,9 @@ + +Changes with nginx 0.3.9 10 Nov 2005 + + *) Bugfix: nginx considered URI as unsafe if two any symbols was + between two slashes; bug appeared in 0.3.8. + Changes with nginx 0.3.8 09 Nov 2005
--- a/CHANGES.ru +++ b/CHANGES.ru @@ -1,3 +1,9 @@ + +Изменения в nginx 0.3.9 10.11.2005 + + *) Исправление: nginx считал небезопасными URI, в которых между двумя + слэшами находилось два любых символа; ошибка появилась в 0.3.8. + Изменения в nginx 0.3.8 09.11.2005 @@ -32,8 +38,8 @@ nginx мог оставлять открытыми соединения и временные файлы с запросами клиентов. - *) Исправление: рабочие процессы не сбрасывал буферизированные логи при - плавном выходе. + *) Исправление: рабочие процессы не сбрасывали буферизированные логи + при плавном выходе. *) Исправление: если URI запроса изменялось с помощью rewrite, а затем запрос проксировался в location, заданном регулярным выражением, то
--- a/src/core/nginx.h +++ b/src/core/nginx.h @@ -8,7 +8,7 @@ #define _NGINX_H_INCLUDED_ -#define NGINX_VER "nginx/0.3.8" +#define NGINX_VER "nginx/0.3.9" #define NGINX_VAR "NGINX" #define NGX_OLDPID_EXT ".oldbin"
--- a/src/http/ngx_http_parse.c +++ b/src/http/ngx_http_parse.c @@ -1056,7 +1056,7 @@ ngx_http_parse_unsafe_uri(ngx_http_reque /* detect "/../" */ - if (p[2] == '/') { + if (p[0] == '.' && p[1] == '.' && p[2] == '/') { goto unsafe; } @@ -1070,7 +1070,9 @@ ngx_http_parse_unsafe_uri(ngx_http_reque /* detect "/.../" */ - if (p[3] == '/' || p[3] == '\\') { + if (p[0] == '.' && p[1] == '.' && p[2] == '.' + && (p[3] == '/' || p[3] == '\\')) + { goto unsafe; } }