The change host function check if the new host is a participant when changing hosts , but doesn't prevent the host from later changing their participation status to false. This could lead to a situation where the host is no longer participating, but also can leave with the funds.
Lack of invariant that host must always be a participant, if we have a malicious participant that participate for 0 and then take the host of the event and go with the funds.
No checks in withdraw() function to verify host is still participating
Host could withdraw all funds whil not participating to the event, he has access to withdraw() function to take all the funds. The host can still control funds even after opting out and there is no mechanism to recover funds if host withdraw and leaves.
Add a host status checks, prevent host from leaving while being host on the function changeParticipationStatus , and force host to transfer role before leaving.
Also secure the withdraw function and add multisig - I would recommand to have more thant one host , at least 2 or 3 to ensure that the dinner is properly organized :D we want the christmas Dinner to be perfect !
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.