Weaknesses of type CWE-479
2 resultsUso de função não-reentrante em manipulador de sinal
Um manipulador de sinal (signal handler) chama uma função que não é segura para ser interrompida e chamada novamente — típicamente funções que acessam ou modificam estado compartilhado sem proteção. Quando um sinal interrompe a execução normal e o handler invoca essas funções, pode corromper dados, causar deadlock ou comportamento indefinido.
Um programa usa malloc() dentro de um signal handler. Se o sinal interrompe a própria malloc() em execução (que está modificando a heap), o handler chama malloc() novamente, causando corrupção da estrutura de alocação de memória e crashes.
Dentro de signal handlers, use apenas funções async-signal-safe (listadas em signal-safety(7)), como write(), _exit(), signal(). Se precisar fazer algo complexo, defina apenas uma flag volatile e processe a lógica pesada fora do handler, após seu retorno.