Hello!
On Tue, Nov 22, 2022 at 01:49:22PM +0000, Korobov Vladimir via nginx-ru wrote:
> Статический анализ исходного кода выявил некоторые непонятные для меня места.
> ngx_http_proxy_module.c: строка 1489
>
> while (*(uintptr_t *) le.ip) {
>
> lcode = *(ngx_http_script_len_code_pt *) le.ip;
> (void) lcode(&le);
[...]
> code = *(ngx_http_script_code_pt *) e.ip;
> code((ngx_http_script_engine_t *) &e);
[...]
> }
>
> В этой строке e.ip не проверяется на валидность перед
> использованием, хотя в этом файле это всегда делается перед
> использованием. Помогите понять почему?
Тут e.ip используется после проверки le.ip в начале цикла. Если
вдруг e.ip окажется NULL - это означает, что коды в
headers->lengths и headers->values рассинхронизированы, и всё
происходящее не имеет смысла.
--
Maxim Dounin
http://mdounin.ru/
_______________________________________________
nginx-ru mailing list -- nginx-ru@nginx.org
To unsubscribe send an email to nginx-ru-leave@nginx.org