The PuppyRaffle::withdrawFees function uses the contract's balance as a counter which is highly unreliable and can lead to unexpected behavior.
A contract's balance is dynamic and can receive Ether through various ways, including payable functions, mining rewards, destroyed contracts, and precalculated addresses.
The functionality of the PuppyRaffle::withdrawFees function can be frustated by external actors.
Foundry
I recommend to do not create external dependencies, moreover with the contract's balance.
You can also add access control to this function, but depending on what you want, you may prefer it without it.
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.