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
This commit is contained in:
George Joseph
2019-07-29 07:31:56 -06:00
parent 32642b83ea
commit 8e44d823c1

View File

@@ -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) {