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.