The current implementation of the ChristmasDinner::deposit and ChristmasDinner::receive functions does not allow users to sign up friends for the event. The functions only allow the user to sign up themselves.
According to the specifications and docs, the contract should allow users to sign up friends for the event. However, the current implementation only allows user to sign up themselves as the participant status is directly linked to msg.sender. This is the case for both, the ChristmasDinner::deposit function and the ChristmasDinner::receive function.
The current implementation of ChristmasDinner.sol simply does not allow signing up friends directly. The only way a user could sign up a friend would be by having access to the friend's private key or through another contract that represents the "friend" and calls the deposit function on behalf of the friend.
This issue is considered as having low impact. The main impact is that the contract does not provide the functionality as intended. If the contract is supposed to implemented accoding to the specifications in the docs, this functionality should be added. However, if the contract is intended to only allow users to sign up themselves, this is not an issue.
Foundry, manual review
To allow users to sign up friends for the event using whitelisted tokens, the ChristmasDinner::deposit should be updated to accept an additional parameter for the friend's wallet address. To also allow friend sign ups using ETH, the ETH sign ups would need to be redesigned as the receive function does not allow any parameters. In that case, ETH sign ups could be integrated in the deposit function. Note, that this would be a minimal facilitation of friend sign ups. Allowing users to sign up their friends might require a more extensive redesign of the contract to address the following questions:
Are the donated funds tracked separately or for the signer of the transaction?
How are refunds handled for friends that were signed up by a user?
Who can issue refunds - the user who signed up the friend or the friend themselves?
How can a user claim a refund for the friend or themselves?
Can a user change a friend's partipant status or only the friend themselves?
It is recommended to clarify these questions and implement the desired functionality accordingly.
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.