In the normal behavior, the placeBid function should prevent the current highest bidder from placing another bid, whether it's a regular bid or a buy-now purchase.
The specific issue is that the check require(msg.sender != previousBidder, "Already highest bidder"); is placed after the buy-now logic block, allowing the current highest bidder to bypass this restriction by placing a bid equal to or greater than the buyNowPrice.
Likelihood: High
This will occur whenever a previous bidder attempts to place a new bid using the buy-now price mechanism.
Impact: Low
This breaks the intended auction mechanics where the highest bidder should not be able to place additional bids.
Move the require(msg.sender != previousBidder, "Already highest bidder"); check to the beginning of the function, right after the seller check and before the buy-now logic. This ensures that the current highest bidder cannot place any additional bids, whether they're regular bids or buy-now purchases.
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.