Skip to content

Commit

Permalink
Rewrite: fixed segfault with rewritten URI and "alias".
Browse files Browse the repository at this point in the history
The "alias" directive cannot be used in the same location where URI
was rewritten.  This has been detected in the "rewrite ... break"
case, but not when the standalone "break" directive was used.

This change also fixes proxy_pass with URI component in a similar
case:

       location /aaa/ {
           rewrite ^ /xxx/yyy;
           break;
           proxy_pass http://localhost:8080/bbb/;
       }

Previously, the "/bbb/yyy" would be sent to a backend instead of
"/xxx/yyy".  And if location's prefix was longer than the rewritten
URI, a segmentation fault might occur.
  • Loading branch information
mdocguard committed Dec 16, 2019
1 parent 48086f7 commit af8ea17
Showing 1 changed file with 8 additions and 1 deletion.
9 changes: 8 additions & 1 deletion src/http/ngx_http_script.c
Original file line number Diff line number Diff line change
Expand Up @@ -1470,7 +1470,14 @@ ngx_http_script_return_code(ngx_http_script_engine_t *e)
void
ngx_http_script_break_code(ngx_http_script_engine_t *e)
{
e->request->uri_changed = 0;
ngx_http_request_t *r;

r = e->request;

if (r->uri_changed) {
r->valid_location = 0;
r->uri_changed = 0;
}

e->ip = ngx_http_script_exit;
}
Expand Down

0 comments on commit af8ea17

Please sign in to comment.