HTTP/2: fixed null pointer dereference with server push.

r->headers_in.host can be NULL in ngx_http_v2_push_resource().

This happens when a request is terminated with 400 before the :authority
or Host header is parsed, and either pushing is enabled on the server{}
level or error_page 400 redirects to a location with pushes configured.

Found by Coverity (CID 1429156).
This commit is contained in:
Ruslan Ermilov 2018-02-09 23:20:08 +03:00
parent 09eb20c8a7
commit c32d9d28fd

View File

@ -946,7 +946,11 @@ ngx_http_v2_push_resource(ngx_http_request_t *r, ngx_str_t *path,
host = r->headers_in.host;
if (authority->len == 0 && host) {
if (host == NULL) {
return NGX_ABORT;
}
if (authority->len == 0) {
len = 1 + NGX_HTTP_V2_INT_OCTETS + host->value.len;