When withdrawing and ETH, the TokenManager.sol contract uses Solidity’s transfer() function.
Using Solidity's transfer() function has some notable shortcomings when the withdrawer is a smart contract, making ETH deposits impossible to withdraw. Specifically, the withdrawal will inevitably fail when:
The withdrawer smart contract does not implement a payable fallback function.
The withdrawer smart contract implements a payable fallback function that uses more than 2300 gas units.
The withdrawer smart contract implements a payable fallback function that needs less than 2300 gas units but is called through a proxy that raises the call’s gas usage above 2300.
https://github.com/Cyfrin/2024-08-tadle/blob/main/src/core/TokenManager.sol#L169
Loss of Funds because withdrawal will fail
Manual Analysis
Use call instead of transfer.
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.