Description: ERC20 functions may not behave as expected. For example: return values are not always meaningful.
Impact: If ContractManager::transferFrom
fails and doesn't revert, the contract may behave incorrectly, assuming the transfer succeeded and it could lead to incorrect contest funding, loss of funds, or unexpected behavior.
Proof of Concept:
Use a token that doesn't revert or return false on failure.
Call fundContest with insufficient allowance or balance.
Observe that the contract proceeds without reverting, despite the transfer failing.
Recommended Mitigation: Follow the given below mitigation to avoid the problem:
Use OpenZeppelin's SafeERC20 library for safe token operations.
Replace token.transferFrom(...)
with token.safeTransferFrom(...)
.
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.