ETH transfer via .transfer()
may revert for contracts needing more than 2300 gas
The FestivalPass::withdraw
function sends the contarct's entire ETH balance to a specified adderss using Solidity's transfer
method. transfer
only forwads 2300 gas to the recipient, which is insufficient for most smat contracts to receive funds unless they're extremely minimal. In case target
is a contract that requires more than 2300 gas in its fallback or receive function the call will revert, and ETH will be stuck in the FestivalPass
contract.
Likelihood: Low
Occurs when target
is a contract with a non-trivial receive()
or fallback()
function.
Impact: Low
Not able to withdraw funds to a contract address.
Use call{value: ...}("")
instead of transfer()
to allow forwarding all remaining gas and correctly andle contract recipients.
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.