The protocol is incompatible with smart contract wallets.
The protocol allows users to withdraw their tokens via theTokenManager::withdraw
function and rescue them by calling the Rescuable::rescue
funciton. Here are the mecanisms used to transfer those funds to the users.
As we can see, when it comes to transfer native tokens, those functions use payable(address).transfer(amount)
which is not compatible with smart contract wallets.
Smart contract wallets cannot withdraw/rescue native tokens.
Manual review.
Use payable(address).call{value: amount_to_transfer}("")
for native token transfer instead.
Also prevent reentrancy by adding the necessary checks-effects-interractions pattern and reentrancy guard.
Invalid, known issues [Medium-2](https://github.com/Cyfrin/2024-08-tadle/issues/1)
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.