SnowmanAirdrop::claimSnowman() has no checks to ensure that an address has already claimed and a person can claim twiceAirdrop contract uses markle root to check for eligibility
However, address remains eligible even if person has claimed once, since there are no other checks
Likelihood:
very high
Impact:
Users claiming more than once breaks invariants
Add the following test case to the test suite of SnowmanAirdrop. The contract has a merkle hash where alice's wallet with 1 Snow token is eligible for minting the airdrop. Therefore, we are minting snowman once. Then, Alice's wallet address becomes 0. However, we are transferring Alice another 1 Snow token and thus she again becomes eligible for the airdrop and can claim an NFT, as proved by the test
Add a mapping from address to bool which keeps track of the people who have claimed the token, and add a check using the mapping to prevent people from claiming again
The claim function of the Snowman Airdrop contract doesn't check that a recipient has already claimed a Snowman. This poses no significant risk as is as farming period must have been long concluded before snapshot, creation of merkle script, and finally claiming.
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.