Falhas do tipo CWE-191
328 resultadosUnderflow de inteiro (envolvimento ou wraparound)
Ocorre quando uma operação aritmética subtrai um valor de um inteiro, resultando em um número menor do que o mínimo representável pelo tipo de dado. O processador ou linguagem 'envolve' o resultado para o máximo valor do tipo (wraparound), causando lógica inesperada. Isso frequentemente leva a bypass de validações, alocação de memória gigante ou acesso a posições indevidas.
Um programa válida o tamanho de um buffer subtraindo dois valores inteiros sem sinal (unsigned int). Se o primeiro valor for menor que o segundo, em vez de resultar em um número negativo, o resultado envolve para um inteiro extremamente alto (ex: 0 - 1 = 4.294.967.295 em 32-bit), passando por todas as verificações e causando overflow ou read/write fora dos limites.
Sempre valide que o resultado de operações aritméticas está dentro do intervalo esperado antes de usá-lo. Use checagem de underflow (verificar se minuendo >= subtraendo) ou prefira tipos assinados com verificação de exceção. Em linguagens modernas, use bibliotecas de aritmética segura que lançam erro em wraparound.