Weaknesses of type CWE-192

6 results

Erro de Coerção de Inteiros

Ocorre quando um inteiro é convertido implicitamente entre tipos de dados (por exemplo, de um tipo maior para um menor) sem validação adequada, causando perda de dados ou comportamento inesperado. A coerção silenciosa pode levar a valores truncados, sinais invertidos ou transbordamentos que o código não esperava tratar.

Example

Um programa recebe um tamanho de buffer como long (64 bits) e o atribui diretamente a um int (32 bits) sem checar. Se o valor for maior que 2³¹-1, o int fica negativo ou muito menor, fazendo a alocação de memória ficar insuficiente e causando estouro de buffer posteriormente.

How to mitigate

Valide explicitamente antes de converter: verifique se o valor está dentro da faixa permitida do tipo destino. Use flags do compilador (`-Wconversion` em GCC/Clang) para alertar coerções suspeitas e prefira tipos com range bem definido (use size_t para tamanhos, não int).