Description:
In cancelListing(), usdc.safeTransfer is called while collateralForMinting[listing.tokenId] still holds the collateral amount. An attacker with a malicious USDC token (or in a scenario where USDC supports transfer hooks) can re-enter cancelListing() and withdraw the collateral multiple times.
Impact: A seller can recover their collateral multiple times, draining USDC from the contract.
Recommended Mitigation:
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.
The contest is complete and the rewards are being distributed.