From: Wilfried Goesgens Date: Mon, 19 Sep 2011 21:19:12 +0000 (+0000) Subject: fix possible leaks around 'W'; the funambol code abuses it. X-Git-Tag: v8.11~447 X-Git-Url: https://code.citadel.org/?p=citadel.git;a=commitdiff_plain;h=88883a6bf9e4859707fb43c3cd3608fb5166f76c fix possible leaks around 'W'; the funambol code abuses it. --- 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) {