From 045d44762ce7cd267e64849c1c138d45b1fa040f Mon Sep 17 00:00:00 2001 From: Daniel-Constantin Mierla Date: Sat, 3 Mar 2018 07:39:45 +0100 Subject: [PATCH] core: check return of dlsym() before dlerror() handling - cope with the case when dlerror is not reset by dlsym - related to GH #1465 --- src/core/sr_module.c | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/src/core/sr_module.c b/src/core/sr_module.c index 594f3d6af8e..8a195fc12d6 100644 --- a/src/core/sr_module.c +++ b/src/core/sr_module.c @@ -630,11 +630,14 @@ int load_module(char* mod_path) if(expref.len>3 && strcmp(expref.s+expref.len-3, ".so")==0) expref.len -= 3; snprintf(exbuf, 62, "_%.*s_exports", expref.len, expref.s); - exp = (union module_exports_u*)dlsym(handle, exbuf); LM_DBG("looking up exports with name: %s\n", exbuf); - if ( (error =(char*)dlerror())!=0 ){ - LM_ERR("%s\n", error); - goto error1; + exp = (union module_exports_u*)dlsym(handle, exbuf); + if(exp==NULL) { + if ( (error =(char*)dlerror())!=0 ){ + LM_ERR("failure for exports symbol: %s - dlerror: %s\n", + exbuf, error); + goto error1; + } } } /* hack to allow for kamailio style dlflags inside exports */