From 0a41d00b51975a276b4c35cebe4d4e6e0d837d5a Mon Sep 17 00:00:00 2001 From: Thomas Roessler Date: Fri, 11 May 2001 11:04:55 +0000 Subject: [PATCH] Fix a memory leak in mutt_free_envelope(); avoid dangling pointers in header editing. --- headers.c | 11 ++++++----- muttlib.c | 1 + 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/headers.c b/headers.c index 0dab00ee..6b7c084b 100644 --- a/headers.c +++ b/headers.c @@ -109,11 +109,15 @@ void mutt_edit_headers (const char *editor, /* restore old info. */ n->references = msg->env->references; msg->env->references = NULL; + mutt_free_envelope (&msg->env); - msg->env = n; + msg->env = n; n = NULL; + + if (!msg->env->in_reply_to) + mutt_free_list (&msg->env->references); mutt_expand_aliases_env (msg->env); - + /* search through the user defined headers added to see if either a * fcc: or attach-file: field was specified. */ @@ -199,7 +203,4 @@ void mutt_edit_headers (const char *editor, mutt_free_list (&tmp); } } - - if (!msg->env->in_reply_to) - mutt_free_list (&msg->env->references); } diff --git a/muttlib.c b/muttlib.c index d973514f..694ff369 100644 --- a/muttlib.c +++ b/muttlib.c @@ -642,6 +642,7 @@ void mutt_free_envelope (ENVELOPE **p) safe_free ((void **) &(*p)->supersedes); safe_free ((void **) &(*p)->date); mutt_free_list (&(*p)->references); + mutt_free_list (&(*p)->in_reply_to); mutt_free_list (&(*p)->userhdrs); safe_free ((void **) p); } -- 2.40.0