The ModuleManager
contract’s _isModuleInstalled
function currently checks for four module types: validator, executor, fallback, and hook, but it does not check for the MultiType module, which is identified as type 0. This discrepancy leads to revert errors in the Nexus
contract's isModuleInstalled
and uninstallModule
functions when dealing with MultiType modules.
The ModuleManager
contract’s _isModuleInstalled
function omits the MultiType module from its checks, although MultiType is a recognized type (type 0). Consequently, when the Nexus
contract calls isModuleInstalled
to check for a MultiType module, it encounters errors. Additionally, the uninstallModule
function in the Nexus
contract relies on _isModuleInstalled
to verify module types before uninstallation, leading to further complications.
ModuleManager::_isModuleInstalled
The absence of MultiType module checks in the ModuleManager
contract can cause the Nexus
contract’s isModuleInstalled
function to return false when verifying MultiType modules. This issue can also affect the uninstallModule
function, potentially preventing to direct uninstallation of MultiType modules like _multiTypeInstall
and causing unexpected behavior or system malfunctions.
Manual Review
Enhance _isModuleInstalled
Function: Update the _isModuleInstalled
function in the ModuleManager
contract to include checks for the MultiType module, ensuring it is recognized as a valid module type.
Add _uninstallMultiType
Function: Implement a _uninstallMultiType
function in the ModuleManager
contract, mirroring the functionality of _multiTypeInstall
, to handle the uninstallation of MultiType modules correctly.
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.