Bid Beasts

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

In `BidBeastNFTMarletPlace:placeBid`, an initial bid equal to the minimum bid amount will revert

Description: In BidBeastNFTMarletPlace:placeBid, the initial bid use logic greater than > instead of greater than or equal >= to the minimum bid amount.
resulting in a revert when a user attempts to place an initial bid that exactly matches the minimum bid amount.

function placeBid(uint256 tokenId) external payable isListed(tokenId) {
...
if (previousBidAmount == 0) {
requiredAmount = listing.minPrice;
@> require(msg.value > requiredAmount, "First bid must be > min price");
listing.auctionEnd = block.timestamp + S_AUCTION_EXTENSION_DURATION;
emit AuctionExtended(tokenId, listing.auctionEnd);
}
...
}

Impact: This issue prevents users from placing an initial bid that matches the minimum bid amount,
potentially leading to user frustration and loss of bidding opportunities.

Proof of Concept: add the following test to BidBeastMarketPlaceTest.t.sol and run testInitialBidEqualToMinPriceReverts

modifier listSetup() {
_mintNFT();
_listNFT();
_;
}
...
function testInitialBidEqualToMinPriceReverts() public listSetup() {
vm.prank(BIDDER_1);
vm.expectRevert("First bid must be > min price");
market.placeBid{value: MIN_PRICE}(TOKEN_ID);
}

Recommended Mitigation:
change the comparison operator in BidBeastNFTMarletPlace:placeBid from > to >= to allow bids that match the minimum price.

function placeBid(uint256 tokenId) external payable isListed(tokenId) {
...
if (previousBidAmount == 0) {
requiredAmount = listing.minPrice;
- require(msg.value > requiredAmount, "First bid must be > min price");
+ require(msg.value >= requiredAmount, "First bid must be >= min price");
listing.auctionEnd = block.timestamp + S_AUCTION_EXTENSION_DURATION;
emit AuctionExtended(tokenId, listing.auctionEnd);
}
...
}
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.