From: Jeffrey Stedfast Date: Thu, 16 Mar 2017 16:53:47 +0000 (+0000) Subject: fix memory leaks in notmuch-show.c:format_headers_sprinter() X-Git-Tag: 0.24.1~18 X-Git-Url: https://git.notmuchmail.org/git?p=notmuch;a=commitdiff_plain;h=195361c8cd100005e6562f54ccab15cb98cb20fd;hp=e60b44ecf8bd5934959727496c7ef3016ff80cf6 fix memory leaks in notmuch-show.c:format_headers_sprinter() Internet_address_list_to_string() and g_mime_message_get_date_as_string() return allocated string buffers and not const, so from what I can tell from taking a look at the sprinter-sexp.c’s sexp_string() function, the code leaks the recipients_string as well as the date string. --- diff --git a/notmuch-show.c b/notmuch-show.c index 744b6272..2dbf8704 100644 --- a/notmuch-show.c +++ b/notmuch-show.c @@ -244,8 +244,9 @@ format_headers_sprinter (sprinter_t *sp, GMimeMessage *message, * reflected in the file devel/schemata. */ InternetAddressList *recipients; - const char *recipients_string; + char *recipients_string; const char *reply_to_string; + char *date_string; sp->begin_map (sp); @@ -260,6 +261,7 @@ format_headers_sprinter (sprinter_t *sp, GMimeMessage *message, if (recipients_string) { sp->map_key (sp, "To"); sp->string (sp, recipients_string); + g_free (recipients_string); } recipients = g_mime_message_get_recipients (message, GMIME_RECIPIENT_TYPE_CC); @@ -267,6 +269,7 @@ format_headers_sprinter (sprinter_t *sp, GMimeMessage *message, if (recipients_string) { sp->map_key (sp, "Cc"); sp->string (sp, recipients_string); + g_free (recipients_string); } recipients = g_mime_message_get_recipients (message, GMIME_RECIPIENT_TYPE_BCC); @@ -274,6 +277,7 @@ format_headers_sprinter (sprinter_t *sp, GMimeMessage *message, if (recipients_string) { sp->map_key (sp, "Bcc"); sp->string (sp, recipients_string); + g_free (recipients_string); } reply_to_string = g_mime_message_get_reply_to (message); @@ -290,7 +294,9 @@ format_headers_sprinter (sprinter_t *sp, GMimeMessage *message, sp->string (sp, g_mime_object_get_header (GMIME_OBJECT (message), "References")); } else { sp->map_key (sp, "Date"); - sp->string (sp, g_mime_message_get_date_as_string (message)); + date_string = g_mime_message_get_date_as_string (message); + sp->string (sp, date_string); + g_free (date_string); } sp->end (sp);