ПРОЕКТЫ 


  АРХИВ 


Apache-Talk @lexa.ru 

Inet-Admins @info.east.ru 

Filmscanners @halftone.co.uk 

Security-alerts @yandex-team.ru 

nginx-ru @sysoev.ru 


  СТАТЬИ 


  ПЕРСОНАЛЬНОЕ 


  ПРОГРАММЫ 



ПИШИТЕ
ПИСЬМА












     АРХИВ :: nginx-ru
Nginx-ru mailing list archive (nginx-ru@sysoev.ru)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH] http_request: fix a segmentation fault



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@xxxxxxxxxx> 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



 




Copyright © Lexa Software, 1996-2009.