Normal Behavior:
The buySnow function should allow users to purchase tokens by paying either ETH (msg.value) or WETH (safeTransferFrom), but not both simultaneously.
Vulnerability:
If a user approves a large WETH allowance to the contract and then calls buySnow with less or more ETH (failing the msg.value check), the function will execute the else branch, charging WETH while still keeping the sent ETH. This results in the user paying both ETH and WETH for a single token purchase.
Likelihood: High
Reason 1: Occurs whenever a user with WETH approval sends non-matching ETH.
Impact:
Impact 1: Funds theft, users lose both ETH and WETH for a single transaction
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.