MartenitsaMarketplace and Then Send it as a Present Without Removing It From ListingDescription: Producers can list their NFTs using the listMartenitsaForSale function and then, without removing it from the listings, send it to another user using the makePresent function.
Impact: This process does not remove the NFT from the listing but can lead to several issues:
The buyMartenitsa function will always revert because the producer is no longer the owner of the NFT.
The getListing function will return incorrect data, indicating that the NFT is still for sale when it has been transferred.
Users can still vote for the NFT using the MartenitsaVoting::voteForMartenitsa function, and the producer will receive the HealthToken as if the NFT were still for sale.
Note that this might be a design choice, as the getListing and buyMartenitsa functions will still not perform correctly in this case.
Proof of Concept: The test below if added to the test suit can be used as proof of concept:
Recommended Mitigation: Check for tokens being listed in makePresent 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.