When a user calls LendingPool::withdraw
to withdraw more assets than are available in the reserveRToken
contract, the system calls _withdrawFromVault
via _ensureLiquidity
to withdraw additional funds from the crvUSDvault
. However, the retrieved assets are not routed to the reserveRToken
contract as intended. Instead, they are sent to the LendingPool
contract. As a result, when ReserveLibrary::withdraw
is called, it fails due to insufficient funds in the reserveRToken
contract.
The issue occurs in LendingPool::withdraw
when available liquidity in the reserveRToken
contract is insufficient to cover the withdrawal. _ensureLiquidity
tries to withdraw the missing amount from the crvUSDvault
, but the assets are not routed to reserveRTokenAddress
. This leaves the reserveRToken
contract underfunded.
Failed transactions due to insufficient liquidity in the reserveRToken
contract.
Manual review
Send Withdrawn Assets to reserveRTokenAddress
Modify _withdrawFromVault
to route the assets to reserveRToken
to ensure liquidity is correctly replenished:
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.