The GlobalConfigurationBranch contract does not call the __Ownable_init function in its initialize method, resulting in the contract being left without an owner. This omission prevents the execution of onlyOwner functions within the contract, potentially hindering critical functionalities that rely on ownership control.
The GlobalConfigurationBranch contract inherits from OwnableUpgradeable but fails to initialize the ownership context by calling __Ownable_init. The initialization function initialize sets configuration variables but omits the call to __Ownable_init, which is necessary to set the owner for the contract.
Here is the relevant part of the GlobalConfigurationBranch contract:
GlobalConfigurationBranch.sol#L133-L139
It is mentioned that the __Ownable_init function is called in the UpgradeBranch contract, which sets the owner for UpgradeBranch. However, this initialization does not affect the GlobalConfigurationBranch contract. Each contract must independently call __Ownable_init to set its own owner.
The failure to call __Ownable_init in GlobalConfigurationBranch results in the contract having no owner. Consequently, any functions in GlobalConfigurationBranch protected by the onlyOwner modifier cannot be executed. This could lead to issues in managing the contract's configurations and access control mechanisms, potentially leaving the contract in a non-functional or insecure state.
VSCode, manual code review
Modify GlobalConfigurationBranch::initialize() to call __Ownable_init():
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.