MartenitsaVoting
contract is not resetting the state variables after each voting period. This leads to issues where users who have voted in a previous round are prevented from voting again, and the vote counts from previous rounds persist, skewing the results of subsequent votes.
The main vulnerability lies in the lack of resetting state variables after each voting period:
The MartenitsaVoting::startVoting
function is called and the vote can begin.
Users vote for a Martenitsa Token.
Voting period ends and the winner is announced.
The MartenitsaVoting::startVoting
function is called again for a new round of vote.
Users who have voted in the previous vote round could not vote again, and voteCounts
is accumulated from the previous round, which could lead to the incorrect winner.
Users who have voted in a previous round are unfairly restricted from participating in subsequent votes.
Accumulated vote counts from previous rounds skew the results of subsequent votes, leading to incorrect winner announcements.
Overall, the integrity and fairness of the voting process are compromised, undermining the trust and functionality of the contract.
Manual Review
Consider implementing new instance each vote round.
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.