The endGame() function brings the game to a close by sending ether to the winner address. The function does so by using the transfer method which has a 2300 gas stipend limit.
In line 170 of the TwentyOne.sol contract where the ether prize is transferred to the winner, the transfer method was used. But this is not the best practice as it has a 2300 gas spend limit.
transfer() has a hard gas limit of 2300 gas which means that transactions that 0requires gas above the 2300 limit fails which can be seen in cases where the recipient address is a smart contract wallet (like Gnosis Safe) which typically require more than 2300 gas to process incoming ETH
Manual Review
The endGame() function should be modified so that it uses the call method to make ether transfer to the winner's address.
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.