Falhas do tipo CWE-1265

4 resultados

Invocação acidental de código não reentrante via chamadas aninhadas

Ocorre quando uma função ou componente que não é seguro para reentrância (não pode ser interrompido e chamado novamente durante sua execução) é invocado de forma aninhada — geralmente através de callbacks, interrupts ou operações assíncronas. O código assume execução linear, mas perde o controle do fluxo quando é chamado novamente antes de terminar, corrompendo estado interno ou causando comportamento indefinido.

Exemplo

Um handler de evento que chama uma função para processar dados e liberar recursos. Se durante esse processamento um novo evento dispara o mesmo handler, a segunda execução pode liberar memória ou modificar estruturas que a primeira ainda está usando, levando a crash ou corrupção de dados.

Como mitigar

Proteja código não reentrante com flags (guard clauses) que impeçam reentrada, use locks/mutexes para serializar acesso, ou redesenhe funções para serem reentrantes usando estado local em vez de compartilhado. Em arquiteturas com callbacks/eventos, valide se handlers podem ser disparados durante sua própria execução e bloqueie reentrada se necessário.