Checking addresses against zero-address during initialization or during setting is a security best-practice. However, such checks are missing in the createConduit() function in ConduitController.sol
This is not consistant with the transferOwnership() function where it does check for address(0)
/2022-05-opensea-seaport/contracts/conduit/ConduitController.sol
196: // Ensure the new potential owner is not an invalid address.
197: if (newPotentialOwner == address(0)) {
198: revert NewPotentialOwnerIsZeroAddress(conduit);
199: }
Impact: Allowing zero-addresses may lead to contract redeployments since createConduit() can only be called once.
Unspecific Compiler Version Pragma
description
Avoid floating pragmas for non-library contracts.
While floating pragmas make sense for libraries to allow them to be included with multiple different versions of applications, it may be a security risk for application implementations.
A known vulnerable compiler version may accidentally be selected or security tools might fall-back to an older compiler version ending up checking a different EVM compilation that is ultimately deployed on the blockchain.
It is recommended to pin to a concrete compiler version.
missing checks for zero address
description
Checking addresses against zero-address during initialization or during setting is a security best-practice. However, such checks are missing in the createConduit() function in ConduitController.sol
This is not consistant with the transferOwnership() function where it does check for address(0)
Impact: Allowing zero-addresses may lead to contract redeployments since createConduit() can only be called once.
Unspecific Compiler Version Pragma
description
Avoid floating pragmas for non-library contracts.
While floating pragmas make sense for libraries to allow them to be included with multiple different versions of applications, it may be a security risk for application implementations.
A known vulnerable compiler version may accidentally be selected or security tools might fall-back to an older compiler version ending up checking a different EVM compilation that is ultimately deployed on the blockchain.
It is recommended to pin to a concrete compiler version.
findings