Neither the constructor nor changeFeeAddress() validates that the fee address is not address(0). If the owner ever sets the fee address to the zero address (typo or bad automation), withdrawFees() will still "succeed", because a plain call to the zero address does not revert, and the accumulated protocol fees are sent to address(0) and effectively burned.
Likelihood: Low - requires an owner mistake; the function is onlyOwner.
Impact: Low - only the protocol's own fees are at risk, but the loss is irreversible once withdrawFees() runs.
Reject the zero address in both the constructor and changeFeeAddress():
The contest is live. Earn rewards by submitting a finding.
Submissions are being reviewed by our AI judge. Results will be available in a few minutes.
View all submissionsThe contest is complete and the rewards are being distributed.