In PuppyRaffle::enterRaffle function, we loop within another loop to check for duplicates in the player array. The dangerous part about this is that, the length of the players array is user modifiable ergo.
This is prone to a dos attack by gas griefing whereby new players can't enter the raffle because of the exhorbitantly high gas required if a user decides to over populate the players array by entering the raffle very many times.
This is prone to a dos attack by gas griefing whereby new players can't enter the raffle because of the exhorbitantly high gas required if a user decides to over populate the players array by entering the raffle very many times.
Manual audit
switch from using an array to keep track of the players of the current raffle to using a mapping or better yet, an OpenZeppelin EnumerableMap, or EnumerableSet. With these data types, entries can be checked for existence in constant time (O(1)).
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.