After _executeSale, the contract sets listings[tokenId].listed = false, but other fields such as seller, minPrice, and buyNowPrice remain unchanged in storage.
This leaves stale data attached to the token ID, which can cause confusion or logical errors if the NFT is later re-listed. For example:
Off-chain indexers may interpret the stale minPrice or buyNowPrice as still valid.
Developers or future contract upgrades that rely on these fields may behave incorrectly.
The correct approach is to fully clear the listing data once the sale is executed.
Risk: Low – not a direct fund theft vector, but creates hidden state inconsistencies.
Impact: Unexpected Behavior on Re-Listing: Old pricing data may persist, causing incorrect assumptions.
Severity: Low – impacts reliability and maintainability of the marketplace.
These values persist even though the listing is no longer active, creating ambiguity.
Fully clear the listing struct in `_executeSale` after a successful sale using the delete keyword:
This ensures that all fields are reset, preventing stale data from causing confusion or bugs in future re-listings.
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.