Falhas do tipo CWE-828
2 resultadosHandler de sinal com operações não seguras para sinais
Um signal handler (função chamada quando o processo recebe um sinal do SO) executa operações que não são async-safe, ou seja, não seguras para serem interrompidas por sinais. Exemplos: malloc/free, fprintf, manipulação de locks. Isso causa race conditions, corrupção de memória ou deadlock quando o sinal interrompe o fluxo principal no meio de uma operação crítica.
Um processo em C usa SIGUSR1 com um handler que chama printf() para logar, enquanto a thread principal faz malloc(). Se o sinal chegar durante malloc(), o handler pode corromper estruturas internas do heap, causando crash ou exploração.
Use apenas funções async-safe no handler (write(), _exit(), signal()), ou melhor ainda: sinalize uma flag volátil (volatile sig_atomic_t) e deixe o loop principal processar o trabalho. Evite pthread_mutex, malloc/free, I/O buffered, e qualquer função que toque estruturas compartilhadas.