]> jfr.im git - solanum.git/blobdiff - ircd/modules.c
modules: fix use-after-free when reloading
[solanum.git] / ircd / modules.c
index 8cbf5113e2450a55ab58395d5c94da6ef31ebe4a..7a246cbe989b9fd09b200790caebbc3a7e6fb8d2 100644 (file)
@@ -689,6 +689,7 @@ modules_do_reload(void *info_)
        struct modreload *info = info_;
        struct module *mod;
        int check_core;
+       int origin;
        char *m_bn = rb_basename(info->module);
        struct Client *source_p = find_id(info->id);
 
@@ -700,6 +701,7 @@ modules_do_reload(void *info_)
                return;
        }
 
+       origin = mod->origin;
        check_core = mod->core;
 
        mod_remember_clicaps();
@@ -712,7 +714,7 @@ modules_do_reload(void *info_)
                return;
        }
 
-       if((load_one_module(m_bn, mod->origin, check_core) == false) && check_core)
+       if((load_one_module(m_bn, origin, check_core) == false) && check_core)
        {
                sendto_realops_snomask(SNO_GENERAL, L_NETWIDE,
                                     "Error reloading core module: %s: terminating ircd", m_bn);