NFT Dealers

First Flight #58
Beginner FriendlyFoundry
100 EXP
Submission Details
Impact: low
Likelihood: low

[L-1] Uninitialized metadataFrozen State Variable

Author Revealed upon completion

Root + Impact

Description

  • metadataFrozen is declared as a public state variable but is never explicitly initialized. While Solidity zero-initializes boolean variables to false by default, leaving safety-critical flags without explicit initialization is an unsafe pattern that can confuse readers and auditors.

// src/NFTDealers.sol:41
@> bool public metadataFrozen; // implicitly false — never explicitly set

Risk

Likelihood:

  • The variable is always false by default and behaves correctly in practice.

  • Risk arises if a future refactor mistakenly relies on it being true without explicit initialization.

Impact:

  • No immediate exploit, but reduces code clarity and introduces latent risk.

Proof of Concept

// Deploy the contract and immediately check metadataFrozen
NFTDealers nft = new NFTDealers(...);
assertFalse(nft.metadataFrozen()); // true — it's zero-initialized, not explicitly set

Recommended Mitigation

Explicitly initialize the variable in the constructor or at declaration.

- bool public metadataFrozen;
+ bool public metadataFrozen = false;

Support

FAQs

Can't find an answer? Chat with us on Discord, Twitter or Linkedin.

Give us feedback!