Description: The withdraw function uses Solidity’s built-in .transfer to send the entire contract balance to an arbitrary target address:
Because .transfer forwards a fixed 2300 gas stipend to the recipient’s fallback or receive function, it will revert if the recipient is a contract whose fallback requires more than 2300 gas (for example, logging, complex logic, or even safe-math checks). This can accidentally lock funds in the contract if the owner ever invokes withdraw to a receiver with a “heavy” fallback.
Impact:
Denial of Service / Funds Lockout: An otherwise benign contract used as target may consume > 2300 gas in its fallback and cause withdraw to revert, preventing the owner from ever draining the balance.
Usability Constraint: Restricts the set of addresses you can safely withdraw to, forcing manual gas stipend auditing on every potential target.
Mitigation:
Use low level .call:
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.