The nonReentrant modifier resets the locked state to false after executing the function, which does not correctly protect against nested reentrant calls.
If the function guarded by nonReentrant indirectly calls another function using the same modifier, it will reset locked to false, re-enabling reentrancy during execution.
Allows attackers to exploit reentrancy vulnerabilities, potentially draining funds or manipulating contract state.
Code review.
Refactor the modifier to set locked to true before function execution and reset it afterward:
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.