Re-Listing Overwrites Previous Seller's Uncollected Sale Proceeds : Permanent Fund Loss
After a sale, the original seller's address, price, and collateral reference are stored in s_listings[tokenId]. The seller is expected to call collectUsdcFromSelling to claim their proceeds.
list() uses _tokenId as the storage key and unconditionally overwrites all fields in s_listings[_tokenId]. When the new owner re-lists the same token before the previous seller collects, the original seller's data is destroyed and the onlySeller modifier blocks them permanently.
Likelihood:
This occurs during normal marketplace usage any time a buyer re-lists a purchased NFT before the previous seller collects, no malicious intent is required
On-chain transaction ordering means even a few blocks of delay between sale and collection creates a window for the overwrite
Impact:
Previous seller permanently loses their entire sale proceeds (price - fees) and minting collateral
The onlySeller modifier reverts for the original seller since the stored seller address now belongs to the new lister
No recovery mechanism exists — the funds remain trapped in the contract with no way to route them to the rightful owner
rapid buy and list locks fund from 1st seller
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.