When the owner updates the list of countries for a new event/round, the contract should fully replace the previous set - clearing out any leftover entries so only the intended countries are selectable.
setCountry(string[48] memory countries) writes incoming entries into the fixed string[48] teams array using a simple for loop but does not zero out indices beyond the new list’s effective length. If a shorter (or partially empty) list is provided, old names remain at those higher indices and can still be selected later via joinEvent()/getCountry(), leading to unintended teams in the tournament.
Likelihood: Low
Operations may pass a partially filled countries array (e.g., leaving trailing entries empty) or reuse the function with fewer active teams in a subsequent round, which leaves previous non‑empty names intact at higher indices.
Impact: Low
Unintended team selection: Users can call joinEvent() with an index where stale team names persist, participating in a team that should not exist for the current event.
Accounting/payout inconsistencies: Winner selection (setWinner(countryIndex)) could target a stale team or misalign with front‑end assumptions, corrupting winnerCountryId and downstream share sums.
Clear all previous entries before writing the new list—or, track an explicit active length and enforce it in selection.
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.