Normal Behavior: _getWinnerShares() calculates total shares for the winning country by looping through the usersAddress[] array.
Specific Issue: If a large number of users join the event, the loop may exceed the block gas limit. This makes _getWinnerShares() uncallable, effectively locking functions that depend on it, such as setWinner() or withdrawals. This creates a Denial-of-Service (DoS) condition.
Likelihood:
Likely in events with hundreds or thousands of participants, especially if the network gas limit is not sufficient to process the loop.
Medium likelihood if the vault is intended for mass participation events.
Impact:
Critical DoS: _getWinnerShares() becomes uncallable due to out-of-gas errors, preventing setWinner() and withdraw() from executing.
Vault becomes effectively locked, denying legitimate users access to their winnings.
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.