In the ContestManager.sol and Pot.sol contracts, functions responsible for token transfers rely on the standard transfer and transferFrom methods.
Not all IERC20 implementations revert when there is a failure in transfer/transferFrom. The function signature has a boolean return value and they indicate errors that way instead. By not checking the return value, operations that should have marked as failed, may potentially go through without actually making a payment.
These standard methods pose risks due to varying implementations across different ERC20 tokens.
Manual review
It is suggested to use a wrapper like OpenZeppelin's SafeERC20 library when dealing with ERC20 transfers.
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.