participants variable is not deleted after event which leads to owner unable to stop event.
After event is started using startEvent function, users participates in the event using joinEvent function. When a user enter this function, his account's address is added in the participants array variable which stores all the current participants of the contract.
The issue arises when the event is ended. When event ends using stopEvent function, users who participated in the event are no longer participants so their addresses should be removed from participants variable after the event ends. But the stopEvent function does not deletes the users added. Making the participants variable a ever growing list with new additions after each event.
After many events, the participants array variable will become very large such that when owner runs stopEvent function, it reaches gas limit and the transaction will revert. Due to this, owner won't be able to stop the event, therefore, resulting in the DOS of stopEvent function and the event will always be active.
Manual Review
Add this code in MartenitsaEvent::stopEvent function:
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.