PuppyRaffle#refund has a sendValue function that calls msg.sender to send back the entry fee and set the player addresses in the player array to zero addresses. However, msg.sender can call the fallback() function to reenter refunds().
An attacker can maliciously reenter refund() to steal all the funds.
Manual Review
Consider using ReentrancyGuard or the checks-effects-interactions pattern
reentrancy in refund() 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.