During Hour 6 of Snowman First Flight, I reviewed input validation in Snowman.sol. Found that mint() and setOwner() do not validate for zero address. While not directly exploitable, sending tokens to address(0) burns them and transferring ownership to address(0) can brick the contract.
Severity: Low - Informational
Contract: Snowman.sol
Functions: mint(address,uint256), setOwner(address)
Owner can accidentally call mint(0x0, 1000) and tokens are permanently burned
Owner can accidentally call setOwner(0x0) and lose control of the contract forever
No direct attacker vector, but human error risk exists
Does not cause immediate loss but is a footgun.
OpenZeppelin best practices require validating that address parameters are not address(0). The current functions trust the owner to input correct addresses. Adding a simple require check prevents accidental loss of tokens or ownership.
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.