Root: The buySnow function contains flawed payment logic where the else branch executes safeTransferFrom for WETH regardless of whether ETH was sent, without refunding any sent ETH that doesn't match the exact required amount.
Impact: Users who send incorrect ETH amounts lose both their sent ETH (permanently trapped in contract) and their WETH tokens, effectively paying double the intended price while only receiving tokens equivalent to a single payment.
Likelihood: High
Users commonly send incorrect ETH amounts due to calculation errors, UI bugs, or misunderstanding of exact fee requirements
The function accepts any ETH amount without validation, making accidental incorrect payments inevitable during normal usage
No warning or protection mechanism exists to prevent users from losing funds when they send wrong amounts
Impact: High
Financial Loss: Users lose 100% of sent ETH plus additional WETH tokens, potentially doubling their intended payment
Permanent Fund Lock: Sent ETH becomes permanently trapped in the contract with no recovery mechanism
Protocol Trust Damage: Users experiencing unexpected double charges will lose confidence in the protocol's reliability and security
Add the following test to TestSnow.t.sol and Run
Add better check to the function.
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.