From affed6725ee58aa4dadb227d8033cc3a1dffa7e1 Mon Sep 17 00:00:00 2001 From: Daniel Stenberg Date: Thu, 29 Sep 2011 23:45:36 +0200 Subject: [PATCH] smtp_mail: fix memory leak ... introduced in 7f304ab84f560c --- lib/smtp.c | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/lib/smtp.c b/lib/smtp.c index 68b05f2..dbfc589 100644 --- a/lib/smtp.c +++ b/lib/smtp.c @@ -795,22 +795,32 @@ static CURLcode smtp_mail(struct connectdata *conn) /* calculate the FROM parameter */ if(!data->set.str[STRING_MAIL_FROM]) /* null reverse-path, RFC-2821, sect. 3.7 */ - from = "<>"; + from = strdup("<>"); else if(data->set.str[STRING_MAIL_FROM][0] == '<') from = aprintf("%s", data->set.str[STRING_MAIL_FROM]); else from = aprintf("<%s>", data->set.str[STRING_MAIL_FROM]); + if(!from) + return CURLE_OUT_OF_MEMORY; + /* calculate the optional SIZE parameter */ - if(conn->data->set.infilesize > 0) + if(conn->data->set.infilesize > 0) { size = aprintf("%" FORMAT_OFF_T, data->set.infilesize); + if(!size) + return CURLE_OUT_OF_MEMORY; + } + /* send MAIL FROM */ if(size == NULL) result = Curl_pp_sendf(&conn->proto.smtpc.pp, "MAIL FROM:%s", from); else result = Curl_pp_sendf(&conn->proto.smtpc.pp, "MAIL FROM:%s SIZE=%s", - from, size); + from, size); + + Curl_safefree(size); + Curl_safefree(from); if(result) return result; -- 2.7.4