From 79b688c38ef34ed11ccee3c413a266d76f834883 Mon Sep 17 00:00:00 2001 From: 7u83 <7u83@mail.ru> Date: Sat, 27 Aug 2022 10:40:13 +0200 Subject: [PATCH] Fixed seg fault when mods for some reason fail fail to load. --- src/cw/mod.c | 5 ++++- src/mod/capwap/mod_capwap_ac.c | 2 +- src/mod/capwap80211/mod_capwap80211.c | 2 +- src/mod/cisco/mod_cisco_ac.c | 2 ++ 4 files changed, 8 insertions(+), 3 deletions(-) diff --git a/src/cw/mod.c b/src/cw/mod.c index 5d91ca23..03f8e517 100644 --- a/src/cw/mod.c +++ b/src/cw/mod.c @@ -190,7 +190,10 @@ struct cw_Mod *cw_mod_load(const char *mod_name, cw_Cfg_t * global_cfg, int role } cw_dbg(DBG_MOD, "MOD: %s sucessfull loaded, calling init now.", filename); - mod->init(mod, global_cfg, role); + if (!mod->init(mod, global_cfg, role)){ + dlclose(handle); + mod=NULL; + } errX: free(filename); diff --git a/src/mod/capwap/mod_capwap_ac.c b/src/mod/capwap/mod_capwap_ac.c index 0becb410..877762f1 100644 --- a/src/mod/capwap/mod_capwap_ac.c +++ b/src/mod/capwap/mod_capwap_ac.c @@ -30,7 +30,7 @@ static int init(struct cw_Mod * mod, cw_Cfg_t * global_cfg, int role) } - return 0; + return 1; } diff --git a/src/mod/capwap80211/mod_capwap80211.c b/src/mod/capwap80211/mod_capwap80211.c index 2de9ccba..16247662 100644 --- a/src/mod/capwap80211/mod_capwap80211.c +++ b/src/mod/capwap80211/mod_capwap80211.c @@ -14,7 +14,7 @@ static int init() { cw_dbg(DBG_INFO, "Initialiazing mod_capwap80211 ..."); - return 0; + return 1; } diff --git a/src/mod/cisco/mod_cisco_ac.c b/src/mod/cisco/mod_cisco_ac.c index 59d58b46..818d92c4 100644 --- a/src/mod/cisco/mod_cisco_ac.c +++ b/src/mod/cisco/mod_cisco_ac.c @@ -117,11 +117,13 @@ static int init(struct cw_Mod *mod, cw_Cfg_t * global_cfg, int role) capwap_mod = cw_mod_load("capwap",global_cfg,role); if (capwap_mod == NULL){ cw_log(LOG_ERR, "CISCO: failed to load base module 'capwap"); + return 0; } capwap80211_mod = cw_mod_load("capwap80211", global_cfg,role); if (capwap_mod == NULL){ cw_log(LOG_ERR, "CISCO: failed to load base module 'capwap80211"); + return 0; } /*cisco_config = mbag_create();*/