The _withdrawFromVault
function in the LendingPool contract incorrectly assumes that the Curve Vault's withdrawal function follows a specific interface. However, the parameters passed in the LendingPool contract do not match the actual Curve Vault function signature. This can lead to transaction failures or unexpected behavior as extra parameters are being passed.
The LendingPool contract assumes the Curve Vault withdrawal function has the following signature:
However, the actual Curve Vault contract defines the withdrawal function as:
Key Differences:
Extra Parameters in LendingPool: The LendingPool function passes maxLoss
and strategies
, but the real Curve Vault function does not accept these parameters.
Incorrect Parameter Order: LendingPool expects assets, receiver, owner, maxLoss, strategies
, while Curve Vault only expects assets, receiver, owner
. This can lead to unintended function execution or outright transaction failures.
Transaction Failure Due to Parameter Mismatch – The function call will revert, blocking liquidity withdrawals.
Unexpected Behavior if Parameters Are Ignored – Withdrawals may appear successful but behave incorrectly.
1. Correct the Function Signature to Match the Curve Vault Interface
Removed extra parameters (maxLoss
, strategies
) to match the real Curve Vault function.
Ensures compatibility with Curve Vault's withdrawal function, preventing transaction failures.
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.