No fallback or receive function
Any sort of functions that send ether to either the owner, player or winner use amounts calculated from state variables as opposed to contract balance. In the event that any Eth is sent to this contract perhaps in error by a user that doesn't quite understand how to use it it will be locked forever. For example:
A player misunderstood the rules and they just send the 'feeAmount' directly to the contract
They realize their mistake and send the 'feeAmount' again via the 'enterRaffle()' function
In an attempt to recover their initial deposit they call refund() but that only returns an amount of 'entranceFee x1' when they actually have send 'entranceFee x 2'
Whether they win or lose nobody is able to recover that Eth send in step 1 including the contract Owner
Medium. There can be a potential loss of funds due to human oversight
Manual inspection
Implement a fallback or receive 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.