# HG changeset patch # User Ben Schmidt # Date 1289483616 -39600 # Node ID 2add5c5f88f87ebebbd4f1ca396de666240aac83 # Parent 179d5a0ed6864a468d02f23cba9baab96d460368 Fix some memory leaks diff -r 179d5a0ed686 -r 2add5c5f88f8 ChangeLog --- a/ChangeLog Fri Nov 12 00:01:07 2010 +1100 +++ b/ChangeLog Fri Nov 12 00:53:36 2010 +1100 @@ -1,3 +1,4 @@ + o Fixed small memory leaks when SMTP errors occur o Improved error logging when requeuing o Fix php-admin to work when topdir contains a symlink (e.g. on Mac) o Better techniques for locating support files in php-admin -- existing diff -r 179d5a0ed686 -r 2add5c5f88f8 src/mlmmj-send.c --- a/src/mlmmj-send.c Fri Nov 12 00:01:07 2010 +1100 +++ b/src/mlmmj-send.c Fri Nov 12 00:53:36 2010 +1100 @@ -248,7 +248,7 @@ size_t bodylen) { int retval = 0; - char *reply, *tohdr; + char *reply, *reply2, *tohdr; if(strchr(to, '@') == NULL) { errno = 0; @@ -268,7 +268,8 @@ reply); myfree(reply); write_rset(sockfd); - checkwait_smtpreply(sockfd, MLMMJ_RSET); + reply2 = checkwait_smtpreply(sockfd, MLMMJ_RSET); + if (reply2 != NULL) myfree(reply2); return MLMMJ_FROM; } retval = write_rcpt_to(sockfd, to); @@ -280,7 +281,8 @@ reply = checkwait_smtpreply(sockfd, MLMMJ_RCPTTO); if(reply) { write_rset(sockfd); - checkwait_smtpreply(sockfd, MLMMJ_RSET); + reply2 = checkwait_smtpreply(sockfd, MLMMJ_RSET); + if (reply2 != NULL) myfree(reply2); if(mlmmjbounce && ((reply[0] == '4') || (reply[0] == '5')) && (reply[1] == '5')) { myfree(reply); @@ -304,7 +306,8 @@ log_error(LOG_ARGS, "Error with DATA. Reply = [%s]", reply); myfree(reply); write_rset(sockfd); - checkwait_smtpreply(sockfd, MLMMJ_RSET); + reply2 = checkwait_smtpreply(sockfd, MLMMJ_RSET); + if (reply2 != NULL) myfree(reply2); return MLMMJ_DATA; } @@ -362,7 +365,8 @@ "avail. Reply = [%s]", reply); myfree(reply); write_rset(sockfd); - checkwait_smtpreply(sockfd, MLMMJ_RSET); + reply2 = checkwait_smtpreply(sockfd, MLMMJ_RSET); + if (reply2 != NULL) myfree(reply2); return MLMMJ_DOT; } @@ -428,7 +432,7 @@ size_t bodylen, const char *verpextra) { int retval, i; - char *reply; + char *reply, *reply2; retval = write_mail_from(sockfd, from, verpextra); if(retval) { @@ -441,7 +445,8 @@ reply); myfree(reply); write_rset(sockfd); - checkwait_smtpreply(sockfd, MLMMJ_RSET); + reply2 = checkwait_smtpreply(sockfd, MLMMJ_RSET); + if (reply2 != NULL) myfree(reply2); return MLMMJ_FROM; } for(i = 0; i < addrs->count; i++) { @@ -482,7 +487,8 @@ log_error(LOG_ARGS, "Error with DATA. Reply = [%s]", reply); myfree(reply); write_rset(sockfd); - checkwait_smtpreply(sockfd, MLMMJ_RSET); + reply2 = checkwait_smtpreply(sockfd, MLMMJ_RSET); + if (reply2 != NULL) myfree(reply2); return MLMMJ_DATA; } @@ -519,7 +525,8 @@ "avail. Reply = [%s]", reply); myfree(reply); write_rset(sockfd); - checkwait_smtpreply(sockfd, MLMMJ_RSET); + reply2 = checkwait_smtpreply(sockfd, MLMMJ_RSET); + if (reply2 != NULL) myfree(reply2); return MLMMJ_DOT; }