The SwanManager contract inherits from OwnableUpgradeable but lacks a function to initialize the owner, which is essential for access control of onlyOwner functions. Without setting the owner explicitly, no address has ownership rights, and all onlyOwner functions become inaccessible.
adding that it is inherited but it would not be owned by the contract owner
The contract does not have an owner initialization function, leaving onlyOwner functions without an authorized address.
The OwnableUpgradeable pattern requires calling __Ownable_init() in an initializer function to set the initial owner. Without it, the contract’s owner remains unset.
he contract's onlyOwner functions are effectively locked, preventing the owner from calling those functions
Manual code review
Add an initializer function that calls __Ownable_init() to set the contract owner upon deployment or upgrade.
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.