Beatland Festival

First Flight #44
Beginner FriendlyFoundrySolidityNFT
100 EXP
View results
Submission Details
Impact: low
Likelihood: medium
Invalid

No Event Emitted on setFestivalContract

Root + Impact

Description

  • Normal Behavior:
    When the festival contract address is set via setFestivalContract, an event should be emitted to record this critical change. This allows off-chain services, auditors, and users to track when and to what address the festival contract was assigned.

    Issue:
    The setFestivalContract function does not emit any event when the festival contract address is set. As a result, there is no on-chain record of this action, making it difficult to audit, monitor, or react to changes in the contract’s configuration.

function setFestivalContract(address _festival) external onlyOwner {
require(festivalContract == address(0), "Festival contract already set");
festivalContract = _festival;
// No event emitted here
}

Risk

Likelihood:

  • This function is called at least once per deployment, and the lack of an event makes it harder to track contract state changes, especially in production or multi-admin environments.

Impact:

  • While this does not affect contract logic or user funds directly, it reduces transparency, makes off-chain monitoring more difficult, and can complicate audits or incident investigations.

Proof of Concept

Whenever the owner calls, No event is emitted, so off-chain systems and users cannot track when or to which address the festival contract was set.

// This call sets the festival contract address, but no event is emitted for off-chain tracking or auditing.
beatToken.setFestivalContract(address(festival));

Recommended Mitigation

Emit an event whenever the festival contract address is set.

+ event FestivalContractSet(address indexed newFestivalContract);
function setFestivalContract(address _festival) external onlyOwner {
require(festivalContract == address(0), "Festival contract already set");
festivalContract = _festival;
+ emit FestivalContractSet(_festival);
}
Updates

Lead Judging Commences

inallhonesty Lead Judge 25 days ago
Submission Judgement Published
Invalidated
Reason: Non-acceptable severity
Assigned finding tags:

Missing events / Events not properly configured

Informational. This protocol doesn't rely on events to function, they are just nice to have, but not mandatory.

Support

FAQs

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