Weaknesses of type CWE-191
328 resultsUnderflow de inteiro (envolvimento cíclico)
Ocorre quando uma operação aritmética subtrai um valor de um inteiro e o resultado fica abaixo do limite mínimo do tipo, causando um envolvimento cíclico para o valor máximo. Por exemplo, subtrair 1 de um inteiro sem sinal de valor 0 resulta no maior valor possível. Isso pode contornar validações de segurança ou causar comportamentos inesperados.
Um programa valida se um tamanho é >= 0 antes de alocar memória. Se o tamanho vier de uma subtração (total - offset) onde offset é maior que total, um inteiro sem sinal faz o resultado "pular" para um número gigante, burlando a validação e causando alocação excessiva.
Sempre validar o resultado de operações aritméticas antes de usá-lo (verificar se a subtração não gerou underflow), usar tipos inteiros com sinal quando apropriado para detectar condições inválidas, ou usar bibliotecas de aritmética segura que disparam exceções em overflow/underflow.