Queued withdrawals are not claimed by forcePartialWithdraw
Description
The function forcePartialWithdraw
could be called by an admin to force a partial withdrawal. This function internally calls _getTotalRewardsPayoutsFromSafe
, which in turn calls getRewardsPayouts
in the etherFiNode manager, which calls withdrawableBalanceInExecutionLayer
to calculate the rewards to be distributed. If restaking is enabled, the function withdrawableBalanceInExecutionLayer
would add all the claimable withdrawals from the delayedWithdrawalRouter
to the current balance of the etherFiNode.
The function forcePartialWithdraw
does not claim the queued withdrawals first, but the queued withdrawals are added to be distributed to the different entities. As the function does not claim these queued withdrawals first, there would not be enough tokens in the etherFiNode contract to be distributed amongst the entities, and this call would revert.
Impact
The function forcePartialWithdraw
would revert in certain cases.
Recommendations
We recommend calling claimQueuedWithdrawals
to claim the queued withdrawals in forcePartialWithdraw
.
Remediation
This issue has been acknowledged by EtherFi, and a fix was implemented in commit 3c2a6b50↗.