Re: Должны ли строки в ngx_str_t->data терминироваться нулевым байтом?

Maxim Dounin mdounin на mdounin.ru
Вс Ноя 21 21:51:45 MSK 2010


Hello!

On Sun, Nov 21, 2010 at 04:05:56PM +0300, Валентин Бартенев wrote:

> 
> > Присутствие 0 гарантируется только в некоторых специфических
> > случаях (e.g. при парсинге конфига переданные в обработчик
> > директивы аргументы всегда терминированы 0'м).  В общем случае 0'я
> > нет.
> 
> А случай значений исходящих http заголовков все-таки является специфическим 
> или нет? Я смотрел код fastcgi и wsgi модулей, там в функциях *_process_header 
> явно добавляется \0 в конец. Но, как оказалось, сторонние модули могут не 
> следовать этому. Тут, либо их разработчикам надо сообщить, чтобы исправили, 
> либо учитывать самостоятельно такую вероятность.

В общем случае заголовки не обязаны быть null-terminated.  E.g. 
add_header не терминирует добавляемый заголовок 0'м.

В случае заголовков в модуле upstream (proxy, fastcgi, ...) - 
обязаны, и это используется во внутренних обработчиках в модуле.  
Е.g. ngx_http_upstream_copy_content_type() без терминурющего 0'я 
сломается.

Maxim Dounin



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