Fallos del tipo CWE-663
1 resultadoUso de função não-reentrante em contexto concorrente
Ocorre quando código concorrente (threads, processos assíncronos) chama funções que não foram projetadas para múltiplas execuções simultâneas. Essas funções mantêm estado compartilhado (variáveis globais, buffers estáticos) sem sincronização, causando corrupção de dados, comportamento imprevisível ou crashes quando acessadas por mais de uma thread ao mesmo tempo.
Uma biblioteca legacy fornece a função `parsear_xml()` que usa um buffer estático global para armazenar resultados. Quando duas threads chamam essa função simultaneamente, ambas escrevem no mesmo buffer, sobrescrevendo os dados uma da outra. A primeira thread recebe dados corrompidos ou da segunda thread, levando a bugs silenciosos ou falhas de segurança.
Use funções reentrantes (thread-safe) da biblioteca ou reimplemente com sincronização explícita (mutexes, locks). Evite variáveis globais e buffers estáticos em funções que serão chamadas concorrentemente; prefira alocação dinâmica ou thread-local storage. Na revisão de código, identifique chamadas a funções legacy em contextos multi-thread.