As per the documentation, only people who have a soulmate should be able to claim the airdrop.
In 'Airdrop.sol::claim' numberOfDaysInCouple is not calculated correctly to assure that only people with a soulmate can collect the airdrop.
When getting the idToCreationTimestamp of the ownerToId of the msg.sender, this logic would return 0 when the address claiming has not tried to mint a soulmate token or if they are waiting for a soulmate. This would result in the problem below:
(block.timestamp - 0) / daysInSecond;
Meaning the address could claim as many loveTokens as time has passed on the Ethereum blockchain.
This test passes showing that anyone that does not have a soulmate can claim the airdrop
--Foundry
It is recommended add a check to make sure the msg.sender has a soulmate
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.