Modifier ChristmasDinner::nonReentrant
does not set the locked
variable to true
allowing to reenter the functions protected by nonReentrant
modifier.
Modifier nonReentrant
is implemented as below:
The modifier relies on the locked
variable to lock the contract, but it never sets locked
to true.
Function ChristmasDinner::_refundETH
does not follow CEI pattern, but it relies on the nonReentrant
modifier to protect from reentrancy attacks. Since the nonReentrant
is implemented incorrectly and it does not set the locked
variable to true
, this protection does not work and allows to drain the contract eth balance.
Manual review
Set locked
variable to true
after checking its value as below:
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.