Falhas do tipo CWE-195
22 resultadosErro de conversão de inteiro com sinal para sem sinal
Ocorre quando um valor inteiro com sinal (que pode ser negativo) é convertido para sem sinal sem validação prévia. Um número negativo, ao ser reinterpretado como sem sinal, vira um número muito grande, causando lógica quebrada em comparações, alocações de memória ou loops.
Uma função recebe um inteiro com sinal do usuário, usa-o em uma comparação de tamanho (ex: if (tamanho < 1000) alocaMem(tamanho)) e depois o converte para sem sinal. Um valor negativo passa na comparação, vira um número gigante ao ser convertido, e a alocação fica fora de controle.
Valide explicitamente que valores com sinal são não-negativos antes de qualquer conversão para sem sinal. Use verificações de range claras e evite conversões implícitas; em C/C++, compile com avisos de conversão ativados (-Wconversion).