[PATCH]Fixed segmentation fault with error_page for 400 to named location
Maxim Dounin
mdounin at mdounin.ru
Fri Feb 21 17:37:54 UTC 2014
Hello!
On Sat, Feb 22, 2014 at 12:40:35AM +0800, flygoast wrote:
> # HG changeset patch
>
> # User FengGu <flygoast at 126.com>
> # Date 1392981015 -28800
> # Fri Feb 21 19:10:15 2014 +0800
> # Node ID 2dd8fd75f1646336b21cb2f4506f1d45b8771e56
> # Parent 545a4d393e2fb8d5448dad89d25a110fa72e71d1
> Fixed segmentation fault with error_page for 400 to named location
>
>
> When using error_page for code 400 to named location, the bad request's uri
> would be { 0, NULL }, it would result in segmentation fault in
> ngx_http_index_handler() and so on.
>
>
> diff -r 545a4d393e2f -r 2dd8fd75f164 src/http/ngx_http_core_module.c
> --- a/src/http/ngx_http_core_module.c Thu Feb 20 17:27:09 2014 +0400
> +++ b/src/http/ngx_http_core_module.c Fri Feb 21 19:10:15 2014 +0800
> @@ -2651,6 +2651,12 @@
> "using location: %V \"%V?%V\"",
> name, &r->uri, &r->args);
>
>
> + if (r->uri.len == 0) {
> + ngx_log_error(NGX_LOG_INFO, r->connection->log, 0,
> + "using \"/\" as uri for bad request");
> + ngx_str_set(&r->uri, "/");
> + }
> +
> r->internal = 1;
> r->content_handler = NULL;
> r->uri_changed = 0;
This doesn't looks like a good solution.
I would rather return an error in such a case.
--
Maxim Dounin
http://nginx.org/
More information about the nginx-devel
mailing list