Skip to main content

Integer Overflow

What it detects

The detector analyzes addition and multiplication that can overflow when executed inside unchecked blocks or on Solidity versions prior to 0.8. Overflowed values wrap to zero or a small number, breaking contract logic.

Typical symptoms

  • Account balances or counters reset unexpectedly to small values (e.g., zero)
  • Arithmetic within unchecked blocks that assumes overflow won’t happen
  • Contracts using addition or multiplication in loops or without input constraints

Solidity snippet (v0.8.25)

pragma solidity ^0.8.25;

contract Overflow {
function add(uint256 a, uint256 b) external pure returns (uint256) {
unchecked {
// Wraps on overflow
return a + b;
}
}
}

In the above code, if a and b are large enough to overflow uint256, the result will silently wrap around to a much smaller value, potentially causing logical or financial errors.

Why it matters on EVM

Integer overflows in the EVM can allow:

  • Bypassing accounting checks
  • Draining or inflating balances
  • Skipping loop termination conditions
  • Creating denial-of-service or infinite loop scenarios

Even though Solidity 0.8+ includes built-in overflow protection, unsafe usage of unchecked can reintroduce this classic vulnerability.

Never use unchecked unless you're 100% sure overflow is impossible or irrelevant.