The i_arbiter address can be initialized like address(0) and is possible for a DOS.
The i_arbiter is not evaluated in the constructor, but the evaluation is in initiateDispute()
. So, if for some reason the buyer and the seller do not reach an agreement, it is not possible to create a dispute and the fund may be blocked.
The buyer may forget to initialize the arbiter(default is address(0) and execute the transaction and lose the funds.
The have impact on the buyer or seller for receive the payment or refund.
Manual code review
You can mitigate this vulnerability by moving these sentences to the constructor. How that :
and update initiateDispute()
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.