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;
                 }
             }