[nginx] Fixed URI normalization with merge_slashes switched off.

Ruslan Ermilov ru at nginx.com
Tue Oct 8 18:57:55 UTC 2019


details:   https://hg.nginx.org/nginx/rev/6208c5418c88
branches:  
changeset: 7579:6208c5418c88
user:      Maxim Dounin <mdounin at mdounin.ru>
date:      Tue Oct 08 21:56:14 2019 +0300
description:
Fixed URI normalization with merge_slashes switched off.

Previously, "/foo///../bar" was normalized into "/foo/bar"
instead of "/foo//bar".

diffstat:

 src/http/ngx_http_parse.c |  4 ++--
 1 files changed, 2 insertions(+), 2 deletions(-)

diffs (21 lines):

diff -r 79bcbe7cd3f2 -r 6208c5418c88 src/http/ngx_http_parse.c
--- a/src/http/ngx_http_parse.c	Tue Oct 08 21:56:14 2019 +0300
+++ b/src/http/ngx_http_parse.c	Tue Oct 08 21:56:14 2019 +0300
@@ -1471,7 +1471,7 @@ ngx_http_parse_complex_uri(ngx_http_requ
             case '/':
             case '?':
             case '#':
-                u -= 5;
+                u -= 4;
                 for ( ;; ) {
                     if (u < r->uri.data) {
                         return NGX_HTTP_PARSE_INVALID_REQUEST;
@@ -1575,7 +1575,7 @@ ngx_http_parse_complex_uri(ngx_http_requ
         u--;
 
     } else if (state == sw_dot_dot) {
-        u -= 5;
+        u -= 4;
 
         for ( ;; ) {
             if (u < r->uri.data) {


More information about the nginx-devel mailing list