Platform: Code4rena
Start Date: 04/03/2024
Pot Size: $36,500 USDC
Total HM: 9
Participants: 80
Period: 7 days
Judge: hansfriese
Total Solo HM: 2
Id: 332
League: ETH
Rank: 58/80
Findings: 1
Award: $1.47
🌟 Selected for report: 0
🚀 Solo Findings: 0
🌟 Selected for report: DarkTower
Also found by: 0xJaeger, 0xJoyBoy03, 0xRiO, 0xkeesmark, 0xlemon, 0xmystery, Abdessamed, AcT3R, Afriauditor, AgileJune, Al-Qa-qa, Aymen0909, Daniel526, DanielTan_MetaTrust, Dots, FastChecker, Fitro, GoSlang, Greed, Krace, McToady, SoosheeTheWise, Tripathi, asui, aua_oo7, btk, crypticdefense, d3e4, dd0x7e8, dvrkzy, gesha17, iberry, kR1s, leegh, marqymarq10, n1punp, pa6kuda, radin100, sammy, smbv-1923, trachev, turvy_fuzz, valentin_s2304, wangxx2026, y4y, yotov721, yvuchev, zhaojie
1.4652 USDC - $1.47
https://github.com/code-423n4/2024-03-pooltogether/blob/main/pt-v5-vault/src/PrizeVault.sol#L617
Yield fee shares are incorrectly reduced when claiming part of them, resulting that the remaining yield fee shares will not be able to be claimed again.
At line 617, the yieldFeeBalance
is reduced by _yieldFeeBalance
. However, the real claimed amount is _shares
. It is possible that _shares < _yieldFeeBalance
, in which case, part of the yield fee shares will be locked in the vault and will not be able to be claimed.
611: function claimYieldFeeShares(uint256 _shares) external onlyYieldFeeRecipient { 612: if (_shares == 0) revert MintZeroShares(); 613: 614: uint256 _yieldFeeBalance = yieldFeeBalance; 615: if (_shares > _yieldFeeBalance) revert SharesExceedsYieldFeeBalance(_shares, _yieldFeeBalance); 616: 617:=> yieldFeeBalance -= _yieldFeeBalance; 618: 619: _mint(msg.sender, _shares); 620: 621: emit ClaimYieldFeeShares(msg.sender, _shares); 622: }
VSCode
After claiming, decrease yieldFeeBalance
by _shares
instead of _yieldFeeBalance
.
function claimYieldFeeShares(uint256 _shares) external onlyYieldFeeRecipient { if (_shares == 0) revert MintZeroShares(); uint256 _yieldFeeBalance = yieldFeeBalance; if (_shares > _yieldFeeBalance) revert SharesExceedsYieldFeeBalance(_shares, _yieldFeeBalance); - yieldFeeBalance -= _yieldFeeBalance; + yieldFeeBalance -= _shares; _mint(msg.sender, _shares); emit ClaimYieldFeeShares(msg.sender, _shares); }
Math
#0 - c4-pre-sort
2024-03-11T21:56:40Z
raymondfam marked the issue as sufficient quality report
#1 - c4-pre-sort
2024-03-11T21:56:45Z
raymondfam marked the issue as duplicate of #10
#2 - c4-pre-sort
2024-03-13T04:38:37Z
raymondfam marked the issue as duplicate of #59
#3 - c4-judge
2024-03-15T07:38:35Z
hansfriese marked the issue as satisfactory