When dealing with upgradable contracts, it is better to make the Access Control and Privilege Roles in a separate storage location ruther than with normal variables (making it in a slot far away from slots 0, 1, 2, 3, ...), this is to prevent any problem when upgrading the contract like storage collision that may lead to renouncing the ownership and losing the access control for the contract.
The current contracts which Bridge
contract inherits from them implement OpenZeppelin Ownable
not OwnableUpgradable
.
Use OpenZeppelin OwnableUpgradable
instead of Ownable
.
Please, do not suppose impacts, think about the real impact of the bug and check the CodeHawks documentation to confirm: https://docs.codehawks.com/hawks-auditors/how-to-determine-a-finding-validity A PoC always helps to understand the real impact possible.
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.