[Asterisk-code-review] logging,cdr,cel: Fix stringfield memory leak. (asterisk[master])

Richard Mudgett asteriskteam at digium.com
Wed Jun 1 14:10:40 CDT 2016


Richard Mudgett has uploaded a new change for review.

  https://gerrit.asterisk.org/2928

Change subject: logging,cdr,cel: Fix stringfield memory leak.
......................................................................

logging,cdr,cel: Fix stringfield memory leak.

The stringfields refactor to allow adding stringfields to the end of a
structure (f6f4cf459f43f072604927209b39646f84aaa2e2) exposed some
incomplete cleanup code by some stringfield users.

The most noticeable leaker is the logging system where there is a leak for
every log message generated.

ASTERISK-26078 #close
Reported by:  Etienne Lessard
Patches:
      jira_asterisk_26078_v13.patch (license #5621) patch uploaded
      by Richard Mudgett

Change-Id: If6a08b31336b492c3de6f9dfd07c447f8d5a8782
---
M cdr/cdr_custom.c
M cdr/cdr_syslog.c
M cel/cel_custom.c
M main/logger.c
4 files changed, 7 insertions(+), 0 deletions(-)


  git pull ssh://gerrit.asterisk.org:29418/asterisk refs/changes/28/2928/1

diff --git a/cdr/cdr_custom.c b/cdr/cdr_custom.c
index 24cb834..bb63ea0 100644
--- a/cdr/cdr_custom.c
+++ b/cdr/cdr_custom.c
@@ -81,8 +81,10 @@
 static void free_config(void)
 {
 	struct cdr_custom_config *sink;
+
 	while ((sink = AST_RWLIST_REMOVE_HEAD(&sinks, list))) {
 		ast_mutex_destroy(&sink->lock);
+		ast_string_field_free_memory(sink);
 		ast_free(sink);
 	}
 }
diff --git a/cdr/cdr_syslog.c b/cdr/cdr_syslog.c
index 85860ec..39f1159 100644
--- a/cdr/cdr_syslog.c
+++ b/cdr/cdr_syslog.c
@@ -76,8 +76,10 @@
 static void free_config(void)
 {
 	struct cdr_syslog_config *sink;
+
 	while ((sink = AST_RWLIST_REMOVE_HEAD(&sinks, list))) {
 		ast_mutex_destroy(&sink->lock);
+		ast_string_field_free_memory(sink);
 		ast_free(sink);
 	}
 }
diff --git a/cel/cel_custom.c b/cel/cel_custom.c
index f6377fc..f75efdd 100644
--- a/cel/cel_custom.c
+++ b/cel/cel_custom.c
@@ -71,8 +71,10 @@
 static void free_config(void)
 {
 	struct cel_config *sink;
+
 	while ((sink = AST_RWLIST_REMOVE_HEAD(&sinks, list))) {
 		ast_mutex_destroy(&sink->lock);
+		ast_string_field_free_memory(sink);
 		ast_free(sink);
 	}
 }
diff --git a/main/logger.c b/main/logger.c
index ae1e0bd..9a16dcf 100644
--- a/main/logger.c
+++ b/main/logger.c
@@ -174,6 +174,7 @@
 
 static void logmsg_free(struct logmsg *msg)
 {
+	ast_string_field_free_memory(msg);
 	ast_free(msg);
 }
 

-- 
To view, visit https://gerrit.asterisk.org/2928
To unsubscribe, visit https://gerrit.asterisk.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: If6a08b31336b492c3de6f9dfd07c447f8d5a8782
Gerrit-PatchSet: 1
Gerrit-Project: asterisk
Gerrit-Branch: master
Gerrit-Owner: Richard Mudgett <rmudgett at digium.com>



More information about the asterisk-code-review mailing list