Статический анализ 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