The withdraw() function transfers contract ETH to a recipient using Solidity's built-in payable(target).transfer(...):
Solidity's .transfer() forwards a fixed stipend of 2300 gas. If the target is a multisig contract (e.g. Gnosis Safe), DAO treasury, smart contract wallet (ERC-4337), or proxy, the 2300 gas limit will be exceeded, causing the withdrawal transaction to permanently revert and locking festival proceeds in the contract.
Replace .transfer() with low-level .call{value: ...}(""):
The contest is live. Earn rewards by submitting a finding.
Submissions are being reviewed by our AI judge. Results will be available in a few minutes.
View all submissionsThe contest is complete and the rewards are being distributed.