diff options
Diffstat (limited to 'src/core/ngx_string.c')
-rw-r--r-- | src/core/ngx_string.c | 15 |
1 files changed, 7 insertions, 8 deletions
diff --git a/src/core/ngx_string.c b/src/core/ngx_string.c index f042d7c33..2bb335a07 100644 --- a/src/core/ngx_string.c +++ b/src/core/ngx_string.c @@ -980,20 +980,21 @@ ngx_unescape_uri(u_char **dst, u_char **src, size_t size) break; } - /* skip the invalid quoted character */ + /* the invalid quoted character */ - s++; - size--; + state = sw_usual; + + *d++ = ch; break; case sw_quoted_second: + state = sw_usual; + if (ch >= '0' && ch <= '9') { ch = (u_char) ((decoded << 4) + ch - '0'); - state = sw_usual; - if (ch > '%' && ch < 0x7f) { *d++ = ch; break; @@ -1013,8 +1014,6 @@ ngx_unescape_uri(u_char **dst, u_char **src, size_t size) goto done; } - state = sw_usual; - if (ch > '%' && ch < 0x7f) { *d++ = ch; break; @@ -1025,7 +1024,7 @@ ngx_unescape_uri(u_char **dst, u_char **src, size_t size) break; } - /* skip the invalid quoted character */ + /* the invalid quoted character */ break; } |