Snow.buySnow chooses the ETH vs WETH payment path by comparing msg.value to the exact price:
If a buyer sends any non-zero msg.value that isn't exactly s_buyFee * amount, execution falls into the else branch: it charges the full price in WETH and keeps the attached ETH. The stray ETH is never refunded — it stays in the contract and is later swept to the collector as fees. The buyer double-pays.
Likelihood: Medium
Any buyer who mis-sizes msg.value — rounding, a slightly stale quote, or intending to pay in WETH but attaching dust — hits it.
Impact: Medium
Direct, silent loss of the buyer's attached ETH on top of the full WETH charge.
The buyer approves WETH, sends 1 wei with the call, is charged full WETH, and never gets the ETH back:
Don't silently accept mismatched ETH — require the WETH path to carry no ETH (or refund any excess):
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.