]> git.kaiwu.me - nginx.git/commitdiff
merge 2411:
authorIgor Sysoev <igor@sysoev.ru>
Mon, 7 Sep 2009 11:57:04 +0000 (11:57 +0000)
committerIgor Sysoev <igor@sysoev.ru>
Mon, 7 Sep 2009 11:57:04 +0000 (11:57 +0000)
handle "/../" case more reliably

src/http/ngx_http_parse.c

index fcb8fdc8fee0d7c5f2ab1423ccb1bd6052108a0c..87fda2b61ba78a27acb0963341887c481ddfa3e5 100644 (file)
@@ -1123,11 +1123,15 @@ ngx_http_parse_complex_uri(ngx_http_request_t *r, ngx_uint_t merge_slashes)
 #endif
             case '/':
                 state = sw_slash;
-                u -= 4;
-                if (u < r->uri.data) {
-                    return NGX_HTTP_PARSE_INVALID_REQUEST;
-                }
-                while (*(u - 1) != '/') {
+                u -= 5;
+                for ( ;; ) {
+                    if (u < r->uri.data) {
+                        return NGX_HTTP_PARSE_INVALID_REQUEST;
+                    }
+                    if (*u == '/') {
+                        u++;
+                        break;
+                    }
                     u--;
                 }
                 break;