From 8e44d823c17255c9714b6c72ce804474ee23c58c Mon Sep 17 00:00:00 2001 From: George Joseph <gjoseph@digium.com> Date: Mon, 29 Jul 2019 07:31:56 -0600 Subject: [PATCH] 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 --- main/loader.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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) { -- GitLab