-
Notifications
You must be signed in to change notification settings - Fork 12.2k
fix: prevent VestingWallet bricking from uint256 overflow in vestedAmount #5945
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: master
Are you sure you want to change the base?
Conversation
|
Co-authored-by: Hadrien Croubois <[email protected]>
Co-authored-by: Hadrien Croubois <[email protected]>
Co-authored-by: Hadrien Croubois <[email protected]>
Walkthrough
Pre-merge checks and finishing touches✅ Passed checks (5 passed)
✨ Finishing touches🧪 Generate unit tests
📜 Recent review detailsConfiguration used: CodeRabbit UI Review profile: CHILL Plan: Pro 📒 Files selected for processing (1)
🧰 Additional context used🪛 GitHub Actions: formal verificationcontracts/finance/VestingWallet.sol[error] 136-136: Compiler error: Member "saturatingAdd" not found or not visible after argument-dependent lookup in uint256. This occurred during 'forge build' while compiling VestingWallet.sol at line 136. 🪛 GitHub Actions: checkscontracts/finance/VestingWallet.sol[error] 187-187: Hardhat compilation failed during coverage. TypeError: saturatingAdd not found or not visible after argument-dependent lookup in uint256 at VestingWallet.sol:187. 🔇 Additional comments (3)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Summary
Fixes arithmetic overflow vulnerability in
VestingWallet.vestedAmount()
that could brick the contract whenbalance + released
exceedstype(uint256).max
.Changes
vestedAmount()
functions for both ETH and ERC20 tokenstype(uint256).max
when overflow would occur_vestingSchedule()
with alternative calculation methodtimeElapsed = 0
to prevent division by zeroFixes #5793