In BoostController.sol, users can delegate boosts to another address. In the event of expired boost delegation, the recipient of the delegation can call removeBoostDelegation(). However in this function when retrieving the poolBoost struct for the respective pool, it passes the address of the delegation recipient instead of the address of the pool. This will result in boost delegation removals to never be accounted for.
In the above function, line 7 shows that the msg.sender, which is the delegation recipient, is passed in poolBoosts mapping. Since there is no existing pool at the msg.sender's address, the parameters of the poolBoost struct such as totalBoost and workingSupply will always return 0. The removal of the expired boost delegation will hence never be accounted for at the pool level.
Accounting of the pool's boost metrics will be inaccurate, and all expired boost delegations will never be accounted for as well.
Manual
Ensure the pool address parameter is passed when retrieving from poolBoosts[] mapping in BoostController.sol.
The contest is live. Earn rewards by submitting a finding.
This is your time to appeal against judgements on your submissions.
Appeals are being carefully reviewed by our judges.