The Airdrop contract allows users without a soulmate to claim a large amount of tokens, which should not be possible.
The claim() function in Airdrop.sol does not check if the user has a soulmate, so the calculation takes a wrong number of days and sends and incorrect amount of tokens to the user.
This test calls claim() without a soulmate.
The test shows the tokens sent to alice.
Users without a soulmate can steal tokens from the airdrop vault.
Foundry, Manual review
Add a soulmate check in Airdrop:claim()
High severity, This issue is separated from the flawed `isDivorced()` check presented in issue #168 as even if that is fixed, if ownership is not checked, isDivorced would still default to false and allow bypass to claim airdrops by posing as tokenId 0 in turn resulting in this [important check for token claim is bypassed.](https://github.com/Cyfrin/2024-02-soulmate/blob/b3f9227942ffd5c443ce6bccaa980fea0304c38f/src/Airdrop.sol#L61-L66). #220 is the most comprehensive issue as it correctly recognizes both issues existing within the same 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.