Bid Beasts

First Flight #49
Beginner FriendlyFoundrySolidityNFT
100 EXP
View results
Submission Details
Severity: low
Valid

First bid can't equal minimum price

Greater than sign without equal leads to refusing minimum price

Description

  • The `BidBeastsNFTMarket::placeBid` function incorrectly requires the first bid to be strictly greater than the minimum price `(msg.value > requiredAmount)` instead of allowing it to equal the minimum price. This prevents users from bidding exactly at the minimum price, which should be a valid bid according to auction logic.

if (previousBidAmount == 0) {
requiredAmount = listing.minPrice;
//@audit it should be bigger than or equal
@> require(msg.value > requiredAmount, "First bid must be > min price");
listing.auctionEnd = block.timestamp + S_AUCTION_EXTENSION_DURATION;
emit AuctionExtended(tokenId, listing.auctionEnd);
}

Risk

Likelihood:

  • When exactly minimum amount is used to bid


Proof of Concept

function test_placeMinimumPrice() public {
_mintNFT();
_listNFT();
vm.prank(BIDDER_1);
//this will revert but it shouldn't
market.placeBid{value: MIN_PRICE}(TOKEN_ID);
BidBeastsNFTMarket.Bid memory highestBid = market.getHighestBid(TOKEN_ID);
assertEq(highestBid.bidder, BIDDER_1);
}

Recommended Mitigation

adding the equal sign will solve the issue

requiredAmount = listing.minPrice;
- require(msg.value > requiredAmount, "First bid must be > min price");
+ require(msg.value >= requiredAmount, "First bid must be >= min price");
Updates

Lead Judging Commences

cryptoghost Lead Judge about 1 month ago
Submission Judgement Published
Validated
Assigned finding tags:

BidBeasts Marketplace: First Bid > Instead of >=

First bid validation uses > instead of >=, preventing valid starting bids.

Support

FAQs

Can't find an answer? Chat with us on Discord, Twitter or Linkedin.