Module uninstallation relies on calls to the module itself. If any of these calls fail, the operation reverts, potentially causing a denial of service and preventing the user from removing the module.
Modules can be uninstalled by using the uninstallModule()
function.
There is a first call to the module in line 202 to check if the module actually declares itself as a type of the given moduleTypeId
.
Then each of the uninstallation functions for each of the possible module types execute a call to the onUninstall()
function of the module. This is for example the _uninstallHook()
function:
A revert in any of the calls to the module could lead to a denial of service, preventing the owners of the wallet from effectively uninstalling the module.
None.
Consider adding an emergency variant or flag that just clears the module from the account's state.
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.