The BNFT holder is compared with an incorrect address
Description
The function batchDepositWithLiquidityPoolAsBnftHolder
could be called in the LiquidityPool contract when isLpBnftHolder
is true. If isLpBnftHolder
is true, the LiquidityPool is expected to be the owner of the new BNFT and the BNFT of the validator ID to share the safe with.
But internally in the _processDeposit
function, it checks if the owner of the BNFT with ID _validatorIdToShareWithdrawalSafe
is equal to the _staker
instead of LiquidityPool.
Impact
The function batchDepositWithLiquidityPoolAsBnftHolder
would revert if a nonzero _validatorIdToShareWithdrawalSafe
is passed to it because of incorrect owner check.
Recommendations
We recommend passing the address of LiquidityPool as the BNFT holder and comparing the owner of _validatorIdToShareWithdrawalSafe
with this address.
Remediation
This issue has been acknowledged by EtherFi, and a fix was implemented in commit 010bd4b7↗.