Hello! On Sun, Aug 17, 2014 at 11:00:30PM +0300, Markus Linnala wrote:
> # HG changeset patch > # User Markus Linnala <markus.linn...@cybercom.com> > # Date 1408305457 -10800 > # Sun Aug 17 22:57:37 2014 +0300 > # Node ID 6af8cc12f3c933eed752e9ca61622d27a909ca00 > # Parent d350d288cffef0e6395ae1f412842c3b55bc8d42 > fix ETag allocation failure > > diff -r d350d288cffe -r 6af8cc12f3c9 src/http/ngx_http_core_module.c > --- a/src/http/ngx_http_core_module.c Sun Aug 17 22:21:56 2014 +0300 > +++ b/src/http/ngx_http_core_module.c Sun Aug 17 22:57:37 2014 +0300 > @@ -1832,14 +1832,15 @@ > return NGX_ERROR; > } > > + etag->value.data = ngx_pnalloc(r->pool, NGX_OFF_T_LEN + NGX_TIME_T_LEN + > 3); > + if (etag->value.data == NULL) { > + etag->hash = 0; > + return NGX_ERROR; > + } > + > etag->hash = 1; > ngx_str_set(&etag->key, "ETag"); > > - etag->value.data = ngx_pnalloc(r->pool, NGX_OFF_T_LEN + NGX_TIME_T_LEN + > 3); > - if (etag->value.data == NULL) { > - return NGX_ERROR; > - } > - I don't think that moving the allocation make sense as anyway etag->hash has to be explicitly set in the error path. Something like this should be better: # HG changeset patch # User Maxim Dounin <mdou...@mdounin.ru> # Date 1409941111 -14400 # Fri Sep 05 22:18:31 2014 +0400 # Node ID a80ee1f90b2b2c6cdee4e9b0ba2e0d48cad0f011 # Parent f43551f64d028de939332ab9b66c3620b4259e08 Fixed ETag memory allocation error handling. The etag->hash must be set to 0 to avoid an empty ETag header being returned with the 500 Internal Error page after the memory allocation failure. Reported by Markus Linnala. diff --git a/src/http/ngx_http_core_module.c b/src/http/ngx_http_core_module.c --- a/src/http/ngx_http_core_module.c +++ b/src/http/ngx_http_core_module.c @@ -1837,6 +1837,7 @@ ngx_http_set_etag(ngx_http_request_t *r) etag->value.data = ngx_pnalloc(r->pool, NGX_OFF_T_LEN + NGX_TIME_T_LEN + 3); if (etag->value.data == NULL) { + etag->hash = 0; return NGX_ERROR; } -- Maxim Dounin http://nginx.org/ _______________________________________________ nginx-devel mailing list nginx-devel@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-devel