Description
The nonReentrant modifier sets locked = false after function execution but does not set locked = true at the start.
Impact
The reentrancy protection is incomplete, allowing potential reentrant calls before the modifier sets locked = false.
Proof of Concepts
The value of the locked variable is false as per L::43
Hence the require(!locked, "No re-entrancy"); statement in the modifier will always pass, not protecting for reentrancy.
Recommended mitigation
Add the following change to the code.
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.