The _withdrawFromVault function attempts to withdraw assets from the curveVault. However, the owner parameter in the curveVault::withdraw function is incorrectly set to msg.sender rather than the LendingPool contract (address(this)), which owns the shares after the initial deposit. This leads to a transaction failure, preventing the liquidity from being properly rebalanced between the curveVault and the reserveRToken contract.
In the _withdrawFromVault function, the third parameter of curveVault::withdraw is incorrectly set to msg.sender, whereas it should be set to the LendingPool contract (address(this)), which holds the shares after depositing assets into the vault. This misalignment causes the transaction to fail during the withdrawal.
DoS of the deposit and withdraw functions due to _rebalanceLiquidity will always fail
Manual review
Modify the owner parameter in the curveVault::withdraw function call to use address(this) (the LendingPool contract) instead of msg.sender:
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.