The nonReentrant modifier in the InheritanceManager contract uses transient storage (tload and tstore) to prevent reentrancy. However, the implementation is incorrect, which could lead to reentrancy vulnerabilities.
Code:
The modifier uses transient storage (tload and tstore) incorrectly. Specifically:
The code checks slot 1 (tload(1)) but writes to and clears slot 0 (tstore(0, 1) and tstore(0, 0)).
Since slot 1 is never written to, tload(1) always returns 0, and the reentrancy guard never triggers.
Manual review
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.