receive() should check and set participant status and emit proper events.
This function doesn't check whether the sender is already a participant or not, neither updates the participant status on signup Resulting in always NewSignup event emission but no record in storage which is misleading. It also allows a user to keep depositing ether even after the deadline is over, resulting in wrong deposit logic.
User, although being an active participant loses his privelege to access participant only functions. Which could potentially lead to inaccessible funds on the user's end.
Manual Review
add if-else conditon to check for old/new participant as well as update participation status and deadline modifier (same as deposit logic)
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.