Increased gas cost due to unnecessary automatic overflow checks.
Solidity version 0.8+ comes with implicit overflow and underflow checks on unsigned integers.
When an overflow or an underflow isn't possible (as an example, when a comparison is made before the arithmetic operation, or the operation doesn't depend on user input), some gas can be saved by using an unchecked block.
As it's in a comment, it's known to the sponsor that minStable can't overflow:
File: Cvx3CrvOracle.sol
129: // This won't overflow as the max value for int256 is less than the max value for uint256
130: uint256 minStable = min(
131: uint256(daiPrice),
132: min(uint256(usdcPrice), uint256(usdtPrice))
133: );
This should be wrapped inside an unchecked block to save gas.
Tools Used
VS Code
Recommended Mitigation Steps
Uncheck arithmetic operations when the risk of underflow or overflow is already contained by wrapping them in an unchecked block
Handle
Dravee
Vulnerability details
Impact
Increased gas cost due to unnecessary automatic overflow checks.
Solidity version 0.8+ comes with implicit overflow and underflow checks on unsigned integers.
When an overflow or an underflow isn't possible (as an example, when a comparison is made before the arithmetic operation, or the operation doesn't depend on user input), some gas can be saved by using an
unchecked
block.https://docs.soliditylang.org/en/v0.8.10/control-structures.html#checked-or-unchecked-arithmetic
Proof of Concept
As it's in a comment, it's known to the sponsor that
minStable
can't overflow:This should be wrapped inside an
unchecked
block to save gas.Tools Used
VS Code
Recommended Mitigation Steps
Uncheck arithmetic operations when the risk of underflow or overflow is already contained by wrapping them in an
unchecked
block