From 01d1d3763ff931b747bb4d1750c539cee2b57792 Mon Sep 17 00:00:00 2001 From: Badalyan Vyacheslav Date: Mon, 10 Oct 2016 12:49:08 -0400 Subject: [PATCH] cdr_radius,cel_radius: Fix old memleak in unload - Call "rc_openlog" optional. If you do not call, you will simply NULL instead of a name. - On the one PID can be only one syslog channel. And it can already be run in logger.c - Calling rc_openlog we assigns a new name for the channel syslog. This unexpected behavior for logger.c. Most lesser evil, is to agree on a NULL name syslog if the channel was not launched in logger.c. It also solves the problem of memory leaks. ASTERISK-26455 #close Change-Id: Ic17c38de67583e971d78fe18807d1a9faf8f0afd --- CHANGES | 10 ++++++++++ cdr/cdr_radius.c | 12 ------------ cel/cel_radius.c | 12 ------------ 3 files changed, 10 insertions(+), 24 deletions(-) diff --git a/CHANGES b/CHANGES index 622973c48f..5948360dab 100644 --- a/CHANGES +++ b/CHANGES @@ -34,6 +34,16 @@ res_pjsip preferred codec rather than advertising all joint codec capabilities. This limits the other side's codec choice to exactly what we prefer. +cdr_radius +------------------ + * To fix a memory leak the syslog channel is now empty if it has not been set + and used by a syslog channel in the logger. + +cel_radius +------------------ + * To fix a memory leak the syslog channel is now empty if it has not been set + and used by a syslog channel in the logger. + ------------------------------------------------------------------------------ --- Functionality changes from Asterisk 14.1.0 to Asterisk 14.2.0 ---------- ------------------------------------------------------------------------------ diff --git a/cdr/cdr_radius.c b/cdr/cdr_radius.c index e1a639cda7..ddde5b890f 100644 --- a/cdr/cdr_radius.c +++ b/cdr/cdr_radius.c @@ -265,18 +265,6 @@ static int load_module(void) } else return AST_MODULE_LOAD_DECLINE; - /* - * start logging - * - * NOTE: Yes this causes a slight memory leak if the module is - * unloaded. However, it is better than a crash if cdr_radius - * and cel_radius are both loaded. - */ - tmp = ast_strdup("asterisk"); - if (tmp) { - rc_openlog((char *) tmp); - } - /* read radiusclient-ng config file */ if (!(rh = rc_read_config(radiuscfg))) { ast_log(LOG_NOTICE, "Cannot load radiusclient-ng configuration file %s.\n", radiuscfg); diff --git a/cel/cel_radius.c b/cel/cel_radius.c index 3c20e9780c..f6ab892677 100644 --- a/cel/cel_radius.c +++ b/cel/cel_radius.c @@ -237,18 +237,6 @@ static int load_module(void) return AST_MODULE_LOAD_DECLINE; } - /* - * start logging - * - * NOTE: Yes this causes a slight memory leak if the module is - * unloaded. However, it is better than a crash if cdr_radius - * and cel_radius are both loaded. - */ - tmp = ast_strdup("asterisk"); - if (tmp) { - rc_openlog((char *) tmp); - } - /* read radiusclient-ng config file */ if (!(rh = rc_read_config(radiuscfg))) { ast_log(LOG_NOTICE, "Cannot load radiusclient-ng configuration file %s.\n", radiuscfg);