The arbiter address can be inadvertantly set to the zero address which would disable arbiter functionality for the contract.
The i_arbiter
address is passed in to the constructor to be set at time of creation. There is no check whether the address is zero because a value of zero is used to indicate whether or not an arbiter has been set for the escrow.
Low. The severity could potentially be high if buyer was depending on the arbiter because, for example, there was concern about the trustworthiness of the seller.
However, the difficulty of triggering this is high. There would need to be a front-end bug or a transaction with some poorly created calldata that unintentionally set the arbiter address to zero.
Because the difficulty is so high, the overall impact of this finding is low.
Slither.
Consider adding an additional constructor parameter such as disableArbiter
. If this is not explicitly called with true, then include a zero address check for arbiter in the constructor.
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.