Fallos del tipo CWE-681
61 resultadosConversão incorreta entre tipos numéricos
Ocorre quando o código converte um número de um tipo para outro (ex: int para char, long para int) sem validar se o valor cabe no tipo destino, causando truncamento, overflow ou underflow. Isso pode levar a cálculos incorretos, desvios lógicos ou até execução de código malicioso.
Um desenvolvedor recebe um tamanho de buffer como long vindo de uma requisição e o converte diretamente para int sem checar. Se o valor for maior que INT_MAX, o int resultante fica negativo ou muito pequeno, e a alocação de memória falha ou aloca menos espaço que o esperado, criando um buffer overflow.
Sempre validar o valor antes de converter: verificar se ele está dentro do intervalo válido do tipo destino. Use bibliotecas ou funções seguras que detectam overflow (como __builtin_add_overflow em C, ou métodos nativos de linguagens mais modernas), e favoreça tipos maiores quando a origem é desconhecida.