The contract uses the transfer() function for ETH refunds, which forwards only 2,300 gas. This hard-coded gas limit can cause refunds to fail if the receiving address is a contract with complex logic in its receive function.
The _refundETH function uses the transfer() method:
ChristmasDinner.sol#L235
ETH refunds may fail for contract addresses
Manual code review
Performing formal verification with Quint
Replace transfer() with the recommended call() pattern
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.