Beside returning the _totalAssets
,_harvestAndReport()
method of strategy contracts aims harvesting all rewards and redeploying any idle funds. However it does not neither claim claimable funds from Transmuter
nor redeploy idle funds. Additionaly calling _harvestAndReport()
method from the strategy contracts is impossible since it is an internal function and called by no function inside the strategy contracts.
This function is first defined inside BaseStrategy without any implementation and internal function call and by natspec it is specified that this function is designated for harvesting all rewards, redeploy any idle funds and return an accurate accounting of all funds currently held by the Strategy. However in strategy contracts this function is implemented as following :
In none of them it claims claimable funds or redeploy idle funds. Additionaly since in this function is declared as internal and no function inside the contracts call it. It is not callable by any role or eoa address using the strategy contracts.
The _harvestAndReport()
function will be uncallable however it will still increase the contract deployment cost in case the issue is not fixed.
Manual Analysis
The issue can be solved by completely implementing and calling this function by another function inside the contracts. In case there is indeed a donation attack risk exists in this function as it is written in the known issues section following method can be used inside the protocol which is suggested by openzeppelin : virtual offset.
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.