Falhas do tipo CWE-663

1 resultado

Uso de função não-reentrante em contexto concorrente

Uma função não-reentrante (que não pode ser chamada simultaneamente por múltiplas threads ou em situações de concorrência) é utilizada em um ambiente onde essa concorrência é possível. Isso causa corrupção de dados, condições de corrida ou comportamento indefinido, pois a função mantém estado compartilhado que é destruído quando chamadas simultâneas interferem uma na outra.

Exemplo

Uma biblioteca que usa uma variável estática global para armazenar contexto (como um buffer temporário ou um ponteiro de estado) é chamada por múltiplas threads ao mesmo tempo. A thread A escreve dados no buffer enquanto a thread B o lê, resultando em dados corrompidos ou acesso a memória inválida.

Como mitigar

Substitua funções não-reentrantes por versões thread-safe (como versões que usam _r ou _s no final do nome, ou implementadas com locks/mutexes). Se isso não for viável, sincronize o acesso à função com mecanismos de sincronização (mutex, semáforo) ou procure alternativas que sejam reentrantes por design.