Weaknesses of type CWE-828
2 resultsHandler de sinal com operações não seguras para contexto assíncrono
Ocorre quando um handler de sinal executa funções que não são async-safe (seguras para interrupção assíncrona), como malloc, pthread_mutex_lock ou fprintf. Quando um sinal interrompe o programa, essas funções podem estar em estado inconsistente, causando corrupção de memória, deadlock ou comportamento indefinido.
Um programa chama malloc() dentro de um signal handler para registrar um erro. Se o sinal chegar durante outro malloc() no código principal, a heap fica corrompida. Ou um handler tenta adquirir um mutex que o código principal já mantém, causando deadlock instantâneo.
Use apenas funções async-safe no handler (write, signal, exit, _Exit). Para lógica complexa, defina uma flag volátil e processe a ação fora do handler no código principal. Alternativamente, use mecanismos modernos como sigaction com SA_SIGINFO ou substituições como eventfd no Linux.