The _getWinnerShares function aims to sum shares for the winning country by iterating over all unique participant addresses once.
With potential duplicates (from other issues) or high participation, the unbounded loop over usersAddress consumes excessive gas, risking block limit exceedance.
Likelihood:
Post-event with 10,000+ participants filling the array.
Amplified by duplicate pushes from repeated joins, pushing n > 30k entries.
Impact:
setWinner reverts on gas limit, indefinitely blocking winner announcements and withdrawals.
DoS enables griefers to spam joins pre-start, halting the entire event payout.
The _getWinnerShares() function is intended to iterate through all users and sum their shares for the winning country, returning the total.
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.