Fallos del tipo CWE-192
6 resultadosErro de coerção de inteiros
Ocorre quando o código converte ou compara inteiros de tipos diferentes (ex: int para unsigned int, ou de tamanhos distintos) sem validar o valor, permitindo que números negativos se tornem positivos ou valores grandes se truncuem silenciosamente. Isso pode contornar verificações de segurança ou causar comportamento inesperado.
Um validador recebe um tamanho de buffer como int negativo (-100), compara com um limite unsigned (100) e, na coerção, o -100 vira um número gigante. O código então aloca memória baseado nesse valor coagido, causando overflow ou out-of-bounds.
Valide inteiros antes de conversões: verifique se o valor está no intervalo esperado. Use tipos consistentes (preferencialmente unsigned para tamanhos/contadores) e ferramentas de análise estática para detectar coerções implícitas suspeitas. Em C, evite misturar signed e unsigned em operações críticas.