ПРОЕКТЫ 


  АРХИВ 


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: Проблема с нулевым байт ом в ngx_crypt()



Hello!

On Mon, Nov 29, 2010 at 11:17:46AM +0300, Laletin Michail wrote:

> src/os/unix/ngx_user.c
> 
>      81     if (value) {
>      82         len = ngx_strlen(value);
>      83
>      84         *encrypted = ngx_pnalloc(pool, len);
>      85         if (*encrypted) {
>      86             ngx_memcpy(*encrypted, value, len + 1);
>      87         }
> 
> Под строку encrypted выделяется место без учёта нулевого байта на
> конце (len байт).
> А копируется len + 1 байт.
> 
> У меня из-за этого строка encrypted вылезает за пределы ngx_pool_s в
> которой для неё
> зарезервировано место и затирает один байт в следующей ngx_pool_s,
> повреждая d.last.
> В конечном итоге это приводит к полному затиранию d.last d.end и потом
> segmentation violation.

Nice catch, спасибо.

To Igor: обрати внимание, там ошибка в обоих случаях - 
#if (NGX_HAVE_GNU_CRYPT_R) и #else.

Maxim Dounin

_______________________________________________
nginx-ru mailing list
nginx-ru@xxxxxxxxx
http://nginx.org/mailman/listinfo/nginx-ru


 




Copyright © Lexa Software, 1996-2009.