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.
This commit is contained in:
Jeffrey Stedfast 2017-03-16 16:53:47 +00:00 committed by David Bremner
parent e60b44ecf8
commit 195361c8cd

View file

@ -244,8 +244,9 @@ format_headers_sprinter (sprinter_t *sp, GMimeMessage *message,
* reflected in the file devel/schemata. */ * reflected in the file devel/schemata. */
InternetAddressList *recipients; InternetAddressList *recipients;
const char *recipients_string; char *recipients_string;
const char *reply_to_string; const char *reply_to_string;
char *date_string;
sp->begin_map (sp); sp->begin_map (sp);
@ -260,6 +261,7 @@ format_headers_sprinter (sprinter_t *sp, GMimeMessage *message,
if (recipients_string) { if (recipients_string) {
sp->map_key (sp, "To"); sp->map_key (sp, "To");
sp->string (sp, recipients_string); sp->string (sp, recipients_string);
g_free (recipients_string);
} }
recipients = g_mime_message_get_recipients (message, GMIME_RECIPIENT_TYPE_CC); 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) { if (recipients_string) {
sp->map_key (sp, "Cc"); sp->map_key (sp, "Cc");
sp->string (sp, recipients_string); sp->string (sp, recipients_string);
g_free (recipients_string);
} }
recipients = g_mime_message_get_recipients (message, GMIME_RECIPIENT_TYPE_BCC); 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) { if (recipients_string) {
sp->map_key (sp, "Bcc"); sp->map_key (sp, "Bcc");
sp->string (sp, recipients_string); sp->string (sp, recipients_string);
g_free (recipients_string);
} }
reply_to_string = g_mime_message_get_reply_to (message); 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")); sp->string (sp, g_mime_object_get_header (GMIME_OBJECT (message), "References"));
} else { } else {
sp->map_key (sp, "Date"); 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); sp->end (sp);