Weaknesses of type CWE-1265
4 resultsInvocação reentrante não intencional de código não-reentrante
Ocorre quando uma função não-reentrante é chamada novamente antes de sua execução anterior terminar, geralmente através de chamadas aninhadas ou callbacks. Isso causa corrupção de estado, pois a função assume que seus dados privados não serão modificados durante sua execução.
Uma função de processamento de transações que não é reentrante é acionada por um callback externo enquanto ainda processa uma transação anterior. A segunda invocação interfere nas variáveis estáticas ou globais da primeira, resultando em transações processadas incorretamente ou duplicadas.
Use mecanismos de sincronização (mutex, semáforo) para proteger seções críticas, ou redesenhe a função para ser reentrante usando variáveis locais em vez de estáticas/globais. Documente claramente funções que não são reentrantes e evite chamá-las de contextos que possam resultar em reentrada (callbacks, sinais, threads).