[PATCH] http_request: fix a segmentation fault
Maxim Dounin
mdounin at mdounin.ru
Wed May 27 04:19:05 MSD 2009
Hello!
On Wed, May 27, 2009 at 02:19:43AM +0400, Kirill A. Korinskiy wrote:
> At Wed, 27 May 2009 00:01:16 +0400,
> Maxim Dounin <mdounin at mdounin.ru> wrote:
> >
> > А кто будет уничтожать request pool здесь и далее? Он уже создан..
> >
>
> исправленный патч.
[...]
> --- a/src/http/ngx_http_request.c
> +++ b/src/http/ngx_http_request.c
> @@ -449,13 +449,15 @@ ngx_http_init_request(ngx_event_t *rev)
> sizeof(ngx_table_elt_t))
> != NGX_OK)
> {
> - ngx_http_close_request(r, NGX_HTTP_INTERNAL_SERVER_ERROR);
> + ngx_http_close_connection(c);
> + ngx_destroy_pool(r->pool);
[...]
Не то чтобы совсем не попал, но не попал в шарик.
Если ты посмотришь внимательно, то заметишь что в r->pool есть
log, и этот log используется в ngx_destroy_pool(). И, что особенно
неожиданно, этот log использует всякого выделенного из pool'а
соединения. Т.е. работать оно может и будет, но как минимум use
after free ты заработал.
Что будет если вдруг обратно вернутся треды - даже и представлять
не хочу.
Maxim Dounin
More information about the nginx-ru
mailing list