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