From 88883a6bf9e4859707fb43c3cd3608fb5166f76c Mon Sep 17 00:00:00 2001 From: Wilfried Goesgens Date: Mon, 19 Sep 2011 21:19:12 +0000 Subject: [PATCH] fix possible leaks around 'W'; the funambol code abuses it. --- citadel/msgbase.c | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/citadel/msgbase.c b/citadel/msgbase.c index 2299d9a48..1bff449e2 100644 --- a/citadel/msgbase.c +++ b/citadel/msgbase.c @@ -3230,8 +3230,6 @@ long CtdlSubmitMsg(struct CtdlMessage *msg, /* message to save */ syslog(LOG_DEBUG, "Delivering private local mail to <%s>\n", recipient); if (CtdlGetUser(&userbuf, recipient) == 0) { - // Add a flag so the Funambol module knows its mail - msg->cm_fields['W'] = strdup(recipient); CtdlMailboxName(actual_rm, sizeof actual_rm, &userbuf, MAILROOM); CtdlSaveMsgPointerInRoom(actual_rm, newmsgid, 0, msg); CtdlBumpNewMailCounter(userbuf.usernum); @@ -3858,10 +3856,10 @@ struct CtdlMessage *CtdlMakeMessage( msg->cm_fields['E'] = strdup(supplied_euid); } - if (references != NULL) { - if (!IsEmptyStr(references)) { - msg->cm_fields['W'] = strdup(references); - } + if ((references != NULL) && (!IsEmptyStr(references))) { + if (msg->cm_fields['W'] != NULL) + free(msg->cm_fields['W']); + msg->cm_fields['W'] = strdup(references); } if (preformatted_text != NULL) { -- 2.30.2