A setter for a critical address (owner, treasury, oracle, implementation) does not reject address(0). A fat-finger or a malicious call can null out a core dependency, permanently bricking the flow that depends on it.
// setOracle(address(0)) // every price read now calls address(0) -> reverts (or returns 0), // freezing deposits/withdrawals until (if) it can be reset.
function setTreasury(address t) external onlyOwner {
require(t != address(0), "zero addr");
treasury = t;
}
Largest recorded losses in the same failure class — related, not the same bug:
The SaferICO scanner runs 201 detectors over your Solidity source, SAFE-0140 among them. Paste an address or the source itself — a small per-scan fee, shown before you sign, or unlimited on any plan.