mirror of
https://github.com/asterisk/asterisk.git
synced 2025-11-09 11:28:25 +00:00
utils: Fix memory leaks and missed unregistration of CLI commands on shutdown
Final set of patches in a series of memory leak/cleanup patches by Corey Farrell
(closes issue ASTERISK-22467)
Reported by: Corey Farrell
Patches:
main-utils-1.8.patch uploaded by coreyfarrell (license 5909)
main-utils-11.patch uploaded by coreyfarrell (license 5909)
main-utils-12up.patch uploaded by coreyfarrell (license 5909)
........
Merged revisions 401829 from http://svn.asterisk.org/svn/asterisk/branches/1.8
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/11@401830 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
20
main/utils.c
20
main/utils.c
@@ -1025,9 +1025,6 @@ static char *handle_show_locks(struct ast_cli_entry *e, int cmd, struct ast_cli_
|
|||||||
struct thr_lock_info *lock_info;
|
struct thr_lock_info *lock_info;
|
||||||
struct ast_str *str;
|
struct ast_str *str;
|
||||||
|
|
||||||
if (!(str = ast_str_create(4096)))
|
|
||||||
return CLI_FAILURE;
|
|
||||||
|
|
||||||
switch (cmd) {
|
switch (cmd) {
|
||||||
case CLI_INIT:
|
case CLI_INIT:
|
||||||
e->command = "core show locks";
|
e->command = "core show locks";
|
||||||
@@ -1041,7 +1038,10 @@ static char *handle_show_locks(struct ast_cli_entry *e, int cmd, struct ast_cli_
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
ast_str_append(&str, 0, "\n"
|
if (!(str = ast_str_create(4096)))
|
||||||
|
return CLI_FAILURE;
|
||||||
|
|
||||||
|
ast_str_append(&str, 0, "\n"
|
||||||
"=======================================================================\n"
|
"=======================================================================\n"
|
||||||
"=== %s\n"
|
"=== %s\n"
|
||||||
"=== Currently Held Locks\n"
|
"=== Currently Held Locks\n"
|
||||||
@@ -2163,6 +2163,17 @@ int ast_mkdir(const char *path, int mode)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void utils_shutdown(void)
|
||||||
|
{
|
||||||
|
#ifdef HAVE_DEV_URANDOM
|
||||||
|
close(dev_urandom_fd);
|
||||||
|
dev_urandom_fd = -1;
|
||||||
|
#endif
|
||||||
|
#if defined(DEBUG_THREADS) && !defined(LOW_MEMORY)
|
||||||
|
ast_cli_unregister_multiple(utils_cli, ARRAY_LEN(utils_cli));
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
int ast_utils_init(void)
|
int ast_utils_init(void)
|
||||||
{
|
{
|
||||||
#ifdef HAVE_DEV_URANDOM
|
#ifdef HAVE_DEV_URANDOM
|
||||||
@@ -2174,6 +2185,7 @@ int ast_utils_init(void)
|
|||||||
ast_cli_register_multiple(utils_cli, ARRAY_LEN(utils_cli));
|
ast_cli_register_multiple(utils_cli, ARRAY_LEN(utils_cli));
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
ast_register_atexit(utils_shutdown);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user