Weaknesses of type CWE-472
140 resultsEstouro de inteiro
Ocorre quando uma operação aritmética produz um valor que ultrapassa o limite máximo (ou mínimo) que um tipo inteiro consegue representar, causando wrap-around silencioso ou comportamento inesperado. Um inteiro que deveria ser 2.147.483.648 vira -2.147.483.648 em um int de 32 bits, por exemplo. Isso pode levar a alocações de memória pequenas demais, comparações erradas ou lógica de negócio quebrada.
Uma API recebe `tamanho_total = tamanho_header + tamanho_payload`. Se um atacante passa tamanho_header=INT_MAX e tamanho_payload=1000, a soma estoura e resulta em um número negativo ou muito pequeno, alocando um buffer insuficiente. O código então escreve dados além dos limites alocados.
Validar limites antes de operações aritméticas (checar se a+b > MAX_INT antes de somar), usar tipos com range maior (long, BigInteger), ou usar bibliotecas que detectam overflow. Em C/C++, preferir operações que retornam erro em caso de overflow (ex: __builtin_add_overflow no GCC).