transfer()
might return false instead of reverting, in this case, ignoring return value leads to considering it successful.
Context: https://github.com/Cyfrin/2024-01-Morpheus/blob/main/contracts/mock/GatewayRouterMock.sol#L15
Similarly, transferFrom()
also don't revert but returning false.
Context: https://github.com/Cyfrin/2024-01-Morpheus/blob/main/contracts/mock/SwapRouterMock.sol#L9
Tokens that don't actually perform the transfer and return false are still counted as a correct transfer.
Manual Review
Use safeTransfer() from Openzeppelin instead of transfer().
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.