From 03011fa512bc04879f17774450712dade3dc77b9 Mon Sep 17 00:00:00 2001 From: Igor Sysoev Date: Fri, 15 Dec 2006 10:24:57 +0000 Subject: [PATCH] fix segfault when $host is used and *) request is "GET http://host" without CR or LF, or timed out *) request is "GET http://host" with a large blank space --- src/http/ngx_http_request.c | 4 +++- src/http/ngx_http_variables.c | 6 +++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/src/http/ngx_http_request.c b/src/http/ngx_http_request.c index 2c1ac9566..f6dcd6a56 100644 --- a/src/http/ngx_http_request.c +++ b/src/http/ngx_http_request.c @@ -1104,7 +1104,9 @@ ngx_http_alloc_large_header_buffer(ngx_http_request_t *r, if (r->host_start) { r->host_start = new + (r->host_start - old); - r->host_end = new + (r->host_end - old); + if (r->host_end) { + r->host_end = new + (r->host_end - old); + } } if (r->port_start) { diff --git a/src/http/ngx_http_variables.c b/src/http/ngx_http_variables.c index c31defc4e..ab43638f6 100644 --- a/src/http/ngx_http_variables.c +++ b/src/http/ngx_http_variables.c @@ -678,9 +678,13 @@ ngx_http_variable_host(ngx_http_request_t *r, ngx_http_variable_value_t *v, v->data = r->server_name.data; } - } else { + } else if (r->host_end) { v->len = r->host_end - r->host_start; v->data = r->host_start; + + } else { + v->not_found = 1; + return NGX_OK; } v->valid = 1;