Weaknesses of type CWE-1265

4 results

Invocaçã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.

Example

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.

How to mitigate

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).