The constructor stores _usdc as an immutable without any zero-address validation. If deployed with address(0) as the USDC address, all token operations (mintNft, buy, cancelListing, collectUsdcFromSelling, withdrawFees) revert, permanently bricking the contract since usdc is immutable and cannot be updated after deployment.
Likelihood:
Deployment scripts or manual deployment errors could pass address(0) for _usdc.
No pre-deployment validation exists in the contract itself.
Impact:
The contract is deployed and funded with collateral that can never be recovered.
All USDC-dependent functions revert permanently with no upgrade path.
The contract deploys successfully with address(0) as the USDC address. Every subsequent call that involves USDC reverts, and the state is permanently broken.
Add zero-address guards for both _owner and _usdc in the constructor to catch misconfiguration at deploy time.
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.