An unreachable condition in the DeliveryPlace.closeBidTaker
function can cause collateral locking.
The DeliveryPlace.closeBidTaker
can be executed only then offerInfo.offerStatus == OfferStatus.Settled
. Since collateralFee
depends on the offerInfo.usedPoints
the case when no one used the offer points the offerInfo.usedPoints
stays 0
. This should be handled with the if (offerInfo.offerStatus == OfferStatus.Virgin) {
branch but this condition is impossible. This way flow goes in another branch and the collateralFee
will be 0
.
Assets blocking, unexpected behavior
Manual Review
Consider checking if offerInfo.usedPoints
is zero instead of offerInfo.offerStatus == OfferStatus.Virgin
Borderline informational/low severity, taker bid offers can only be closed after settlement by original makers, so the check for `Settled` offer status is correct but the initial `if` block is dead code and will never be reached i.e., even if original maker offer was not settled, this issue cannot be exploited. Additionally, makers are incentivized to settle original offers to earn maker bonuses from subsequent trades from the original maker offers by takers. Some issues such as 612, 1774 and 1775 have no impact described but I am duplicating anyways since I am invalidating this issue. Assigning as informational severity since I believe this can be seen as simply a waste of gas and confusing code logic.
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.