In endGame()
function the transfer
used for Ether payouts in the contract is prone to failure due to its 2300-gas stipend limit.
The contract uses transfer
to send Ether to the player upon winning. This imposes a 2300-gas stipend, which may fail if the recipient is a contract with a fallback function consuming more gas.
The Solidity best pracise is to use call
for transferring Ether, as it provides greater flexibility by forwarding all available gas to the recipient.
If transfer
fails, the Ether payout will not occur, locking funds in the contract and potentially leading to player dissatisfaction.
Manual Review
Aderyn
Replace transfer
with call
for Ether 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.