From ee4cd7df4705a384aa17f603a8c5e61358c5b5da Mon Sep 17 00:00:00 2001 From: Michael Elkins Date: Thu, 3 Jan 2013 19:04:35 +0000 Subject: [PATCH] Fix memory leak when multiple x-label or supersedes header fields exist in the header. In order to keep the current behavior where the value of the last header field present is the one used, free any previous value. --- parse.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/parse.c b/parse.c index acf0621f..28889160 100644 --- a/parse.c +++ b/parse.c @@ -1220,7 +1220,10 @@ int mutt_parse_rfc822_line (ENVELOPE *e, HEADER *hdr, char *line, char *p, short } else if ((!ascii_strcasecmp ("upersedes", line + 1) || !ascii_strcasecmp ("upercedes", line + 1)) && hdr) + { + FREE(&e->supersedes); e->supersedes = safe_strdup (p); + } break; case 't': @@ -1259,6 +1262,7 @@ int mutt_parse_rfc822_line (ENVELOPE *e, HEADER *hdr, char *line, char *p, short } else if (ascii_strcasecmp (line+1, "-label") == 0) { + FREE(&e->x_label); e->x_label = safe_strdup(p); matched = 1; } -- 2.40.0