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.