There is no logic to prevent relisting a tokenId that is already listed for sale.
In MartenitsaMarketplace.sol, listMartenitsaForSale() has no logic to prevent relisting a tokenId that is already listed for sale. A malicious actor can:
List a tokenId for sale.
Wait for a buyer to buy at a certain price.
Frontrun the buy transaction, relisting the same tokenId at a higher price.
Notice in buyMartenitsa(), msg.value >= listing.price tolerates sending value greater than the listed price and potentially overpay for a token.
Potential financial loss for users.
Manual review.
Add logic to prevent relisting atokenId that is already listed for sale.
require(msg.value == listing.price, "Insufficient funds");
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.