[asterisk-commits] dvossel: trunk r201678 - in /trunk: apps/ channels/h323/ channels/misdn/ chan...
SVN commits to the Asterisk project
asterisk-commits at lists.digium.com
Thu Jun 18 11:37:48 CDT 2009
Author: dvossel
Date: Thu Jun 18 11:37:42 2009
New Revision: 201678
URL: http://svn.asterisk.org/svn-view/asterisk?view=rev&rev=201678
Log:
fixes some memory leaks and redundant conditions
(closes issue #15269)
Reported by: contactmayankjain
Patches:
patch.txt uploaded by contactmayankjain (license 740)
memory_leak_stuff.trunk.diff uploaded by dvossel (license 671)
Tested by: contactmayankjain, dvossel
Modified:
trunk/apps/app_rpt.c
trunk/channels/h323/ast_h323.cxx
trunk/channels/misdn/isdn_lib.c
trunk/channels/xpmr/xpmr.c
trunk/codecs/gsm/src/gsm_destroy.c
trunk/main/ast_expr2.c
trunk/main/ast_expr2f.c
trunk/main/asterisk.c
trunk/pbx/pbx_config.c
trunk/res/ael/ael_lex.c
trunk/res/res_config_ldap.c
trunk/utils/ael_main.c
trunk/utils/conf2ael.c
trunk/utils/extconf.c
trunk/utils/stereorize.c
Modified: trunk/apps/app_rpt.c
URL: http://svn.asterisk.org/svn-view/asterisk/trunk/apps/app_rpt.c?view=diff&rev=201678&r1=201677&r2=201678
==============================================================================
--- trunk/apps/app_rpt.c (original)
+++ trunk/apps/app_rpt.c Thu Jun 18 11:37:42 2009
@@ -3937,7 +3937,7 @@
struct rpt *myrpt;
struct rpt_link *l,*l1,linkbase;
struct ast_channel *mychannel;
-int id_malloc, vmajor, vminor, m;
+int vmajor, vminor, m;
char *p,*ct,*ct_copy,*ident, *nodename,*cp;
time_t t;
#ifdef NEW_ASTERISK
@@ -3984,14 +3984,10 @@
ast_free(mytele);
pthread_exit(NULL);
}
- else{
- id_malloc = 1;
- }
}
else
{
ident = "";
- id_malloc = 0;
}
rpt_mutex_unlock(&myrpt->lock);
@@ -4007,8 +4003,7 @@
ast_log(LOG_NOTICE,"Telemetry thread aborted at line %d, mode: %d\n",__LINE__, mytele->mode); /*@@@@@@@@@@@*/
rpt_mutex_unlock(&myrpt->lock);
ast_free(nodename);
- if(id_malloc)
- ast_free(ident);
+ ast_free(ident);
ast_free(mytele);
pthread_exit(NULL);
}
@@ -4054,8 +4049,7 @@
rpt_mutex_unlock(&myrpt->lock);
ast_log(LOG_NOTICE,"Telemetry thread aborted at line %d, mode: %d\n",__LINE__, mytele->mode); /*@@@@@@@@@@@*/
ast_free(nodename);
- if(id_malloc)
- ast_free(ident);
+ ast_free(ident);
ast_free(mytele);
ast_hangup(mychannel);
pthread_exit(NULL);
@@ -4249,8 +4243,7 @@
rpt_mutex_unlock(&myrpt->lock);
ast_log(LOG_NOTICE,"Telemetry thread aborted at line %d, mode: %d\n",__LINE__, mytele->mode); /*@@@@@@@@@@@*/
ast_free(nodename);
- if(id_malloc)
- ast_free(ident);
+ ast_free(ident);
ast_free(mytele);
ast_hangup(mychannel);
pthread_exit(NULL);
@@ -4290,8 +4283,7 @@
rpt_mutex_unlock(&myrpt->lock);
ast_log(LOG_NOTICE,"Telemetry thread aborted at line %d, mode: %d\n",__LINE__, mytele->mode); /*@@@@@@@@@@@*/
ast_free(nodename);
- if(id_malloc)
- ast_free(ident);
+ ast_free(ident);
ast_free(mytele);
ast_hangup(mychannel);
pthread_exit(NULL);
@@ -4813,8 +4805,7 @@
rpt_mutex_unlock(&myrpt->lock);
ast_log(LOG_NOTICE,"Telemetry thread aborted at line %d, mode: %d\n",__LINE__, mytele->mode); /*@@@@@@@@@@@*/
ast_free(nodename);
- if(id_malloc)
- ast_free(ident);
+ ast_free(ident);
ast_free(mytele);
ast_hangup(mychannel);
pthread_exit(NULL);
@@ -5190,8 +5181,7 @@
myrpt->active_telem = NULL;
rpt_mutex_unlock(&myrpt->lock);
ast_free(nodename);
- if(id_malloc)
- ast_free(ident);
+ ast_free(ident);
ast_free(mytele);
ast_hangup(mychannel);
#ifdef APP_RPT_LOCK_DEBUG
Modified: trunk/channels/h323/ast_h323.cxx
URL: http://svn.asterisk.org/svn-view/asterisk/trunk/channels/h323/ast_h323.cxx?view=diff&rev=201678&r1=201677&r2=201678
==============================================================================
--- trunk/channels/h323/ast_h323.cxx (original)
+++ trunk/channels/h323/ast_h323.cxx Thu Jun 18 11:37:42 2009
@@ -572,8 +572,7 @@
{
#ifdef H323_H450
/* Dispatcher will free out all registered handlers */
- if (h450dispatcher)
- delete h450dispatcher;
+ delete h450dispatcher;
h450dispatcher = new H450xDispatcher(*this);
h4502handler = new H4502Handler(*this, *h450dispatcher);
h4504handler = new MyH4504Handler(*this, *h450dispatcher);
@@ -1988,8 +1987,9 @@
if (cap && cap->IsUsable(*this)) {
lastcap++;
lastcap = localCapabilities.SetCapability(0, lastcap, cap);
- } else if (cap)
+ } else {
delete cap; /* Capability is not usable */
+ }
dtmfMode = dtmf_mode;
if (h323debug) {
@@ -2001,8 +2001,9 @@
cap = new H323_UserInputCapability(H323_UserInputCapability::BasicString);
if (cap && cap->IsUsable(*this)) {
lastcap = localCapabilities.SetCapability(0, lastcap, cap);
- } else if (cap)
+ } else {
delete cap; /* Capability is not usable */
+ }
sendUserInputMode = SendUserInputAsString;
} else {
if ((dtmfMode & H323_DTMF_RFC2833) != 0) {
@@ -2011,8 +2012,7 @@
lastcap = localCapabilities.SetCapability(0, lastcap, cap);
else {
dtmfMode |= H323_DTMF_SIGNAL;
- if (cap)
- delete cap; /* Capability is not usable */
+ delete cap; /* Capability is not usable */
}
}
if ((dtmfMode & H323_DTMF_CISCO) != 0) {
@@ -2024,8 +2024,7 @@
dtmfMode |= H323_DTMF_SIGNAL;
} else {
dtmfMode |= H323_DTMF_SIGNAL;
- if (cap)
- delete cap; /* Capability is not usable */
+ delete cap; /* Capability is not usable */
}
}
if ((dtmfMode & H323_DTMF_SIGNAL) != 0) {
@@ -2033,7 +2032,7 @@
cap = new H323_UserInputCapability(H323_UserInputCapability::SignalToneH245);
if (cap && cap->IsUsable(*this))
lastcap = localCapabilities.SetCapability(0, lastcap, cap);
- else if (cap)
+ else
delete cap; /* Capability is not usable */
}
sendUserInputMode = SendUserInputAsTone; /* RFC2833 transmission handled at Asterisk level */
Modified: trunk/channels/misdn/isdn_lib.c
URL: http://svn.asterisk.org/svn-view/asterisk/trunk/channels/misdn/isdn_lib.c?view=diff&rev=201678&r1=201677&r2=201678
==============================================================================
--- trunk/channels/misdn/isdn_lib.c (original)
+++ trunk/channels/misdn/isdn_lib.c Thu Jun 18 11:37:42 2009
@@ -2341,6 +2341,10 @@
if (!rx || !tx) {
cb_log(0,0,"Couldn't open files: %s\n",strerror(errno));
+ if (rx)
+ fclose(rx);
+ if (tx)
+ fclose(tx);
return ;
}
Modified: trunk/channels/xpmr/xpmr.c
URL: http://svn.asterisk.org/svn-view/asterisk/trunk/channels/xpmr/xpmr.c?view=diff&rev=201678&r1=201677&r2=201678
==============================================================================
--- trunk/channels/xpmr/xpmr.c (original)
+++ trunk/channels/xpmr/xpmr.c Thu Jun 18 11:37:42 2009
@@ -157,7 +157,7 @@
TRACEJ(2,(" source len = %i\n",slen));
pd=*dest;
- if(pd) free(pd);
+ free(pd);
pd=calloc(slen+1,1);
memcpy(pd,src,slen);
*dest=pd;
Modified: trunk/codecs/gsm/src/gsm_destroy.c
URL: http://svn.asterisk.org/svn-view/asterisk/trunk/codecs/gsm/src/gsm_destroy.c?view=diff&rev=201678&r1=201677&r2=201678
==============================================================================
--- trunk/codecs/gsm/src/gsm_destroy.c (original)
+++ trunk/codecs/gsm/src/gsm_destroy.c Thu Jun 18 11:37:42 2009
@@ -22,5 +22,5 @@
void gsm_destroy P1((S), gsm S)
{
- if (S) free((char *)S);
+ free((char *)S);
}
Modified: trunk/main/ast_expr2.c
URL: http://svn.asterisk.org/svn-view/asterisk/trunk/main/ast_expr2.c?view=diff&rev=201678&r1=201677&r2=201678
==============================================================================
--- trunk/main/ast_expr2.c (original)
+++ trunk/main/ast_expr2.c Thu Jun 18 11:37:42 2009
@@ -2415,6 +2415,7 @@
free_value (struct val *vp)
{
if (vp==NULL) {
+ free(vp);
return;
}
if (vp->type == AST_EXPR_string || vp->type == AST_EXPR_numeric_string)
Modified: trunk/main/ast_expr2f.c
URL: http://svn.asterisk.org/svn-view/asterisk/trunk/main/ast_expr2f.c?view=diff&rev=201678&r1=201677&r2=201678
==============================================================================
--- trunk/main/ast_expr2f.c (original)
+++ trunk/main/ast_expr2f.c Thu Jun 18 11:37:42 2009
@@ -2379,7 +2379,7 @@
void ast_yyfree(void *ptr, yyscan_t yyscanner)
{
- if (ptr) /* the normal generated ast_yyfree func just frees its first arg;
+ /* the normal generated ast_yyfree func just frees its first arg;
this get complaints on some systems, as sometimes this
arg is a nil ptr! It's usually not fatal, but is irritating! */
free( (char *) ptr );
@@ -2416,8 +2416,7 @@
else
buf[0] = 0;
return_value = strlen(buf);
- if (io.val->u.s)
- free(io.val->u.s);
+ free(io.val->u.s);
}
free(io.val);
}
Modified: trunk/main/asterisk.c
URL: http://svn.asterisk.org/svn-view/asterisk/trunk/main/asterisk.c?view=diff&rev=201678&r1=201677&r2=201678
==============================================================================
--- trunk/main/asterisk.c (original)
+++ trunk/main/asterisk.c Thu Jun 18 11:37:42 2009
@@ -941,8 +941,7 @@
AST_RWLIST_TRAVERSE_SAFE_END;
AST_RWLIST_UNLOCK(&atexits);
- if (ae)
- free(ae);
+ free(ae);
}
/* Sending commands from consoles back to the daemon requires a terminating NULL */
Modified: trunk/pbx/pbx_config.c
URL: http://svn.asterisk.org/svn-view/asterisk/trunk/pbx/pbx_config.c?view=diff&rev=201678&r1=201677&r2=201678
==============================================================================
--- trunk/pbx/pbx_config.c (original)
+++ trunk/pbx/pbx_config.c Thu Jun 18 11:37:42 2009
@@ -451,8 +451,7 @@
ast_unlock_contexts();
error2:
- if (exten)
- free(exten);
+ free(exten);
} else if (a->pos == 4) { /* 'dialplan remove extension EXT _X_' (priority) */
char *exten = NULL, *context, *cid, *p;
struct ast_context *c;
@@ -509,8 +508,7 @@
}
ast_unlock_contexts();
error3:
- if (exten)
- free(exten);
+ free(exten);
}
return ret;
}
@@ -1138,8 +1136,7 @@
ret = strdup(ast_get_context_name(c));
}
- if (ignorepat)
- free(ignorepat);
+ free(ignorepat);
ast_unlock_contexts();
return ret;
}
Modified: trunk/res/ael/ael_lex.c
URL: http://svn.asterisk.org/svn-view/asterisk/trunk/res/ael/ael_lex.c?view=diff&rev=201678&r1=201677&r2=201678
==============================================================================
--- trunk/res/ael/ael_lex.c (original)
+++ trunk/res/ael/ael_lex.c Thu Jun 18 11:37:42 2009
@@ -3221,8 +3221,7 @@
void ael_yyfree(void *ptr, yyscan_t yyscanner)
{
- if (ptr)
- free( (char*) ptr );
+ free( (char*) ptr );
}
static int pbcpop(char x)
@@ -3361,8 +3360,7 @@
*errors = 1;
return 0;
}
- if (my_file)
- free(my_file);
+ free(my_file);
my_file = strdup(filename);
stat(filename, &stats);
buffer = (char*)malloc(stats.st_size+2);
Modified: trunk/res/res_config_ldap.c
URL: http://svn.asterisk.org/svn-view/asterisk/trunk/res/res_config_ldap.c?view=diff&rev=201678&r1=201677&r2=201678
==============================================================================
--- trunk/res/res_config_ldap.c (original)
+++ trunk/res/res_config_ldap.c Thu Jun 18 11:37:42 2009
@@ -1271,10 +1271,8 @@
ldap_err2string(result));
ast_mutex_unlock(&ldap_lock);
- if (filter)
- free(filter);
- if (clean_basedn)
- free(clean_basedn);
+ free(filter);
+ free(clean_basedn);
ldap_msgfree(ldap_result_msg);
ldap_mods_free(ldap_mods, 0);
return -1;
@@ -1297,10 +1295,8 @@
}
ast_mutex_unlock(&ldap_lock);
- if (filter)
- free(filter);
- if (clean_basedn)
- free(clean_basedn);
+ free(filter);
+ free(clean_basedn);
ldap_msgfree(ldap_result_msg);
ldap_mods_free(ldap_mods, 0);
return num_entries;
@@ -1458,10 +1454,8 @@
ldap_err2string(result));
ast_mutex_unlock(&ldap_lock);
- if (filter)
- free(filter);
- if (clean_basedn)
- free(clean_basedn);
+ free(filter);
+ free(clean_basedn);
ldap_msgfree(ldap_result_msg);
ldap_mods_free(ldap_mods, 0);
return -1;
Modified: trunk/utils/ael_main.c
URL: http://svn.asterisk.org/svn-view/asterisk/trunk/utils/ael_main.c?view=diff&rev=201678&r1=201677&r2=201678
==============================================================================
--- trunk/utils/ael_main.c (original)
+++ trunk/utils/ael_main.c Thu Jun 18 11:37:42 2009
@@ -299,8 +299,7 @@
}
/* since add_extension2 is responsible for the malloc'd data stuff */
- if( data )
- free(data);
+ free(data);
return 0;
}
Modified: trunk/utils/conf2ael.c
URL: http://svn.asterisk.org/svn-view/asterisk/trunk/utils/conf2ael.c?view=diff&rev=201678&r1=201677&r2=201678
==============================================================================
--- trunk/utils/conf2ael.c (original)
+++ trunk/utils/conf2ael.c Thu Jun 18 11:37:42 2009
@@ -471,7 +471,7 @@
if (mon) {
*mon++ = 0;
/* now all 4 fields are set; what do we do? */
- pvalIncludesAddIncludeWithTimeConstraints(incl, all, hr, dow, dom, mon);
+ pvalIncludesAddIncludeWithTimeConstraints(incl, strdup(all), strdup(hr), strdup(dow), strdup(dom), strdup(mon));
/* the original data is always best to keep (no 2-min rounding) */
} else {
ast_log(LOG_ERROR,"No month spec attached to include!\n");
@@ -483,6 +483,7 @@
ast_log(LOG_ERROR,"No day of week spec attached to include!\n");
}
}
+ free(all);
}
tmpi = tmpi->next;
}
Modified: trunk/utils/extconf.c
URL: http://svn.asterisk.org/svn-view/asterisk/trunk/utils/extconf.c?view=diff&rev=201678&r1=201677&r2=201678
==============================================================================
--- trunk/utils/extconf.c (original)
+++ trunk/utils/extconf.c Thu Jun 18 11:37:42 2009
@@ -2993,8 +2993,7 @@
static void ast_var_delete(struct ast_var_t *var)
{
- if (var)
- free(var);
+ free(var);
}
Modified: trunk/utils/stereorize.c
URL: http://svn.asterisk.org/svn-view/asterisk/trunk/utils/stereorize.c?view=diff&rev=201678&r1=201677&r2=201678
==============================================================================
--- trunk/utils/stereorize.c (original)
+++ trunk/utils/stereorize.c Thu Jun 18 11:37:42 2009
@@ -156,4 +156,7 @@
}
}
/* That was an endless loop. This point is never reached. */
+ free(leftsample);
+ free(rightsample);
+ free(stereosample);
}
More information about the asterisk-commits
mailing list