From 6fb07febbc43c1c4cbcef596a908b684b9bf95a6 Mon Sep 17 00:00:00 2001
From: Jonathan Rose <jrose@digium.com>
Date: Thu, 24 Oct 2013 20:34:53 +0000
Subject: [PATCH] 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
........

Merged revisions 401830 from http://svn.asterisk.org/svn/asterisk/branches/11
........

Merged revisions 401831 from http://svn.asterisk.org/svn/asterisk/branches/12


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@401832 65c4cc65-6c06-0410-ace0-fbb531ad65f3
---
 main/utils.c | 10 ++++++++++
 1 file changed, 10 insertions(+)

diff --git a/main/utils.c b/main/utils.c
index 6eebff71a8..8252488a9e 100644
--- a/main/utils.c
+++ b/main/utils.c
@@ -2277,6 +2277,15 @@ int ast_safe_mkdir(const char *base_path, const char *path, int mode)
 	return safe_mkdir(absolute_base_path, p, mode);
 }
 
+static void utils_shutdown(void)
+{
+	close(dev_urandom_fd);
+	dev_urandom_fd = -1;
+#if defined(DEBUG_THREADS) && !defined(LOW_MEMORY)
+	ast_cli_unregister_multiple(utils_cli, ARRAY_LEN(utils_cli));
+#endif
+}
+
 int ast_utils_init(void)
 {
 	dev_urandom_fd = open("/dev/urandom", O_RDONLY);
@@ -2286,6 +2295,7 @@ int ast_utils_init(void)
 	ast_cli_register_multiple(utils_cli, ARRAY_LEN(utils_cli));
 #endif
 #endif
+	ast_register_atexit(utils_shutdown);
 	return 0;
 }
 
-- 
GitLab