The factory's createPool validates expiry < block.timestamp + _MIN_EXPIRY_LEAD (lower bound, 30 days) but does NOT check expiry <= type(uint32).max (upper bound). This check exists in ConfidencePool.initialize() (line 197) and setExpiry() (line 625), but by the time initialize catches it, the clone has already been deployed at line 87. The caller wastes gas on the clone deployment without a factory-level early check.
Likelihood: Low — requires caller to pass expiry > uint32 max, which is an input error.
Impact: Low — gas wasted on clone deployment. No funds lost. The factory should provide consistent validation with the pool.
File: L7-Factory-Expiry-Prevalidate.poc.t.sol
Run: forge test --match-path 'L7-Factory-Expiry-Prevalidate.poc.t.sol' -vv
Add the upper-bound check in the factory before clone deployment:
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.