Статический анализ nginx

Maxim Dounin mdounin на mdounin.ru
Вт Ноя 22 14:18:28 UTC 2022


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