From: George Joseph Date: Mon, 29 Jul 2019 13:31:56 +0000 (-0600) Subject: loader.c: Fix possible SEGV when a module fails to register X-Git-Tag: 17.0.0-rc1~15^2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=2938679ff2acb213fc0b7e4f2c6caafdc0512105;p=thirdparty%2Fasterisk.git loader.c: Fix possible SEGV when a module fails to register When a module fails to register itself (usually a coding error in the module), dlerror() can return NULL. We weren't checking for that in load_dlopen() before trying to strdup the error message so a SEGV was thrown. dlerror() is now surrounded with an S_OR so we don't SEGV. Change-Id: Ie0fb9316f08a321434f3f85aecf3c7d2ede8b956 --- diff --git a/main/loader.c b/main/loader.c index b46f745af8..033693e8b0 100644 --- a/main/loader.c +++ b/main/loader.c @@ -1087,7 +1087,7 @@ static struct ast_module *load_dlopen(const char *resource_in, const char *so_ex if (resource_being_loaded) { struct ast_str *list; int c = 0; - const char *dlerror_msg = ast_strdupa(dlerror()); + const char *dlerror_msg = ast_strdupa(S_OR(dlerror(), "")); resource_being_loaded = NULL; if (mod->lib) {