updateVerifier() at lines 263-269 lacks the zero-address guard that the constructor applies at line 68. If the owner passes address(0) (or any address with no code) by mistake, every subsequent claim() reverts inside verifier.verify(...) because a call to a code-less address returns empty bytes, which Solidity 0.8 cannot decode as bool.
Likelihood: low. Requires an owner typo. Impact: temporary denial of claim() until the owner updates again; funds are not lost because emergencyWithdraw remains available.
The issue is that `updateVerifier()` allows the owner to replace the verifier with an arbitrary address, including `address(0)`, even though the constructor explicitly treats a zero verifier as invalid and reverts with `InvalidVerifier()` during initial deployment. In other words, the contract establishes at deployment time that a null verifier address is not an acceptable configuration, but then fails to preserve that same invariant when the verifier is later updated through the admin recovery path.
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.