Проблема с нулевым байтом в ngx_crypt()

Laletin Michail dedmustdie на gmail.com
Пн Ноя 29 11:17:46 MSK 2010


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.




-----------------------------------
Лалетин Михаил


Подробная информация о списке рассылки nginx-ru