Fallos del tipo CWE-828
2 resultadosHandler de sinal com operações não assincronamente seguras
Um handler de sinal executa funções que não são async-safe, ou seja, não podem ser chamadas com segurança dentro de um handler de sinal. Isso causa condições de corrida e corrupção de estado quando o sinal interrompe código em execução que já utiliza essas mesmas funções, levando a comportamento indefinido ou crash.
Um programa usa malloc() dentro de um handler de SIGINT. Se o sinal chegar enquanto malloc() já estava sendo executado no fluxo principal, a alocação de memória fica corrompida. Ou um handler que chama fprintf() enquanto o programa principal também escreve em um arquivo, causando mistura de dados ou deadlock.
Limite handlers de sinal apenas a operações async-safe documentadas (como write(), signal(), exit()). Para lógica complexa, use a técnica de self-pipe: o handler apenas escreve em um pipe ou seta um flag volatile sig_atomic_t, deixando a verdadeira lógica para executar no fluxo principal fora do handler.