Normal Behavior: allowance(owner, spender) should return 0 for any address pair that has no approval set, including when either address is address(0). This is consistent with OpenZeppelin and other implementations.
Specific Issue: _allowance reverts when either owner or spender is address(0). This breaks tooling and integrations that query allowances for edge cases.
Likelihood:
Medium: Indexers, analytics tools, and some protocols query allowance for address(0) as part of their operations or edge-case handling.
Impact:
Medium: Breaks compatibility with tooling; can cause UI errors or failed batch operations in protocols that iterate over allowances.
Root Cause: _spendAllowance always decrements, even when allowance is type(uint256).max.
mpact: Breaks DeFi integrations expecting infinite approval to stay infinite.
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.
The contest is complete and the rewards are being distributed.