The GlobalConfigurationBranch contract does not directly initialize the OwnableUpgradeable contract, which is necessary for the ownership functions to work correctly. The comment suggests that this initialization happens in UpgradeBranch, but there is no direct connection between the two contracts.
The comment in GlobalConfigurationBranch indicates that OwnableUpgradeable is initialized in UpgradeBranch.
However, there is no inheritance or direct interaction between these contracts. Here is UpgradeBranch:
As seen, UpgradeBranch indeed initializes OwnableUpgradeable and sets the owner but just within it. However, GlobalConfigurationBranch is not linked to this in any way.
Without proper initialization of OwnableUpgradeable, the onlyOwner modifier and other ownership-related functions in GlobalConfigurationBranch will not function correctly.
Manual Review
GlobalConfigurationBranch should inherit from UpgradeBranch to leverage the ownership initialization.
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.