The contract imports ReentrancyGuard from OpenZeppelin's contracts, not the upgradeable version. Since this contract is upgradeable and uses Initializable, it should use the ReentrancyGuardUpgradeable to avoid storage clashes. However, the contract inherits from ReentrancyGuard, which is the non-upgradeable version. This could lead to storage layout issues when upgrading the contract, as the non-upgradeable ReentrancyGuard uses a different storage slot than the upgradeable version
To resolve this issue, replace the inheritance of the non-upgradeable ReentrancyGuard with the upgradeable version from OpenZeppelin, i.e., ReentrancyGuardUpgradeable. Make sure to call the __ReentrancyGuard_init function as part of the initialization process in the initializer function . Additionally, ensure that the contract abides by the storage gap requirements to maintain proper alignment and compatibility between contract upgrades.
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.