setOrganizer changes a privileged role without emitting an event. withdraw moves ETH out of the contract but never emits the FundsWithdrawn event that is already defined in IFestivalPass. Off-chain monitoring tools, block explorers, and frontends cannot detect these state changes without parsing transaction traces.
The IFestivalPass interface defines a FundsWithdrawn event, but withdraw never emits it:
For setOrganizer, this is a security concern because the organizer role controls pass configuration, performance creation, and memorabilia collection management. A silent organizer change could go unnoticed by monitoring systems. For withdraw, the event is already defined in the interface but simply never used, suggesting it was intended but forgotten.
Likelihood:
Both functions will be called during normal protocol operation. setOrganizer is called during deployment (constructor calls it) and whenever the organizer needs to change. withdraw is called to collect pass sale revenue.
Impact:
No direct fund loss. Off-chain systems (The Graph indexers, monitoring bots, block explorer event tabs) miss critical state transitions. Security dashboards won't detect unauthorized organizer changes. Accounting systems won't track ETH outflows.
Output:
Emit events for both functions:
The contest is live. Earn rewards by submitting a finding.
Submissions are being reviewed by our AI judge. Results will be available in a few minutes.
View all submissionsThe contest is complete and the rewards are being distributed.