The expected behavior is that a seller can settle a completed listing once, receiving salePrice - fee + lockedCollateral, while protocol fees remain in the contract for owner withdrawal.
The actual behavior allows repeated settlement for the same listing because there is no one-time settlement guard and collateral is not cleared in the settlement path. This enables multiple payouts from the same sale.
Likelihood:
A sold listing naturally transitions to inactive, and seller-driven settlement is part of normal usage after each successful buy.
Repeated calls pass current validation because the function only checks inactive status and seller identity, both unchanged after first settlement.
Impact:
Seller can withdraw sale proceeds multiple times for one listing.
Contract USDC pool can be drained, breaking collateral/proceeds availability for honest users.
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.