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: 53/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
The incorrect subtraction of _yieldFeeBalance
instead of _shares
in the claimYieldFeeShares
function can lead to an incorrect calculation of the available yield fee balance. As a result, the yield fee shares distributed to the yield fee recipient may not accurately reflect the actual available balance, potentially causing financial discrepancies and loss of funds.
The claimYieldFeeShares
function in the PrizeVault
contract subtracts the wrong variable when updating the yieldFeeBalance
. The current implementation subtracts _yieldFeeBalance
instead of _shares
, which leads to an incorrect calculation of the available yield fee balance. This flaw can result in an inaccurate distribution of yield fee shares and potential loss of funds.
/// @notice Transfers yield fee shares to the yield fee recipient /// @param _shares The shares to mint to the yield fee recipient /// @dev Emits a `ClaimYieldFeeShares` event /// @dev Will revert if the caller is not the yield fee recipient or if zero shares are withdrawn function claimYieldFeeShares(uint256 _shares) external onlyYieldFeeRecipient { if (_shares == 0) revert MintZeroShares(); uint256 _yieldFeeBalance = yieldFeeBalance; if (_shares > _yieldFeeBalance) revert SharesExceedsYieldFeeBalance(_shares, _yieldFeeBalance); yieldFeeBalance -= _yieldFeeBalance; _mint(msg.sender, _shares); emit ClaimYieldFeeShares(msg.sender, _shares); }
Manual
The claimYieldFeeShares
function should be updated to subtract _shares
from yieldFeeBalance
instead of _yieldFeeBalance
.
Context
#0 - c4-pre-sort
2024-03-11T21:39:25Z
raymondfam marked the issue as sufficient quality report
#1 - c4-pre-sort
2024-03-11T21:39:30Z
raymondfam marked the issue as duplicate of #10
#2 - c4-pre-sort
2024-03-13T04:38:10Z
raymondfam marked the issue as duplicate of #59
#3 - c4-judge
2024-03-15T07:37:31Z
hansfriese changed the severity to 3 (High Risk)
#4 - c4-judge
2024-03-15T07:40:37Z
hansfriese marked the issue as satisfactory