The r->out chain link could be left uninitialized in case of error.
A segfault could happen if the subrequest handler accessed it.
The issue was introduced in commit
20f139e9ffa8.
"http postpone filter in memory");
if (r->out == NULL) {
- r->out = ngx_alloc_chain_link(r->pool);
- if (r->out == NULL) {
- return NGX_ERROR;
- }
-
clcf = ngx_http_get_module_loc_conf(r, ngx_http_core_module);
if (r->headers_out.content_length_n != -1) {
b->last_buf = 1;
+ r->out = ngx_alloc_chain_link(r->pool);
+ if (r->out == NULL) {
+ return NGX_ERROR;
+ }
+
r->out->buf = b;
r->out->next = NULL;
}