mirror of
https://github.com/asterisk/asterisk.git
synced 2025-10-13 16:21:01 +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
|
#if LOADABLE_MODULES
|
||||||
static void unload_dynamic_module(struct ast_module *mod)
|
static void unload_dynamic_module(struct ast_module *mod)
|
||||||
{
|
{
|
||||||
if (mod->lib)
|
void *lib = mod->lib;
|
||||||
while (!dlclose(mod->lib));
|
|
||||||
/* WARNING: the structure pointed to by mod is now gone! */
|
/* 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)
|
static struct ast_module *load_dynamic_module(const char *resource_in, unsigned int global_symbols_only)
|
||||||
|
Reference in New Issue
Block a user