mirror of
https://github.com/asterisk/asterisk.git
synced 2025-10-12 15:45:18 +00:00
ensure that unload_dynamic_module won't continue dereferencing a module pointer after the module has been unloaded from memory
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@41196 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
@@ -323,9 +323,14 @@ static struct ast_module *find_resource(const char *resource, int do_lock)
|
||||
#if LOADABLE_MODULES
|
||||
static void unload_dynamic_module(struct ast_module *mod)
|
||||
{
|
||||
if (mod->lib)
|
||||
while (!dlclose(mod->lib));
|
||||
/* WARNING: the structure pointed to by mod is now gone! */
|
||||
void *lib = mod->lib;
|
||||
|
||||
/* WARNING: the structure pointed to by mod is going to
|
||||
disappear when this operation succeeds, so we can't
|
||||
dereference it */
|
||||
|
||||
if (lib)
|
||||
while (!dlclose(lib));
|
||||
}
|
||||
|
||||
static struct ast_module *load_dynamic_module(const char *resource_in, unsigned int global_symbols_only)
|
||||
|
Reference in New Issue
Block a user