Remove unchecked block
The unchecked block in the purchaseBond()
function from BondBaseSDA
comes after a check that would disallow any underflows or overflows happening:
// If amount/payout is greater than capacity remaining, revert
if (market.capacityInQuote ? amount_ > market.capacity : payout > market.capacity)
revert Auctioneer_NotEnoughCapacity();
// @audit remove this unchecked;
unchecked {
// Capacity is decreased by the deposited or paid amount
market.capacity -= market.capacityInQuote ? amount_ : payout;
// Markets keep track of how many quote tokens have been
// purchased, and how many payout tokens have been sold
market.purchased += amount_;
market.sold += payout;
}
Despite that, we recommend removing the unchecked
block for posterity reasons, in the case that further operations are performed around the market.capacity
, which would, in turn, jeopardize the safety of this code block.
Remediation
Bond Labs acknowledged this finding and implemented a fix in commit ac5dbf77↗.