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.
* reflected in the file devel/schemata. */
InternetAddressList *recipients;
* reflected in the file devel/schemata. */
InternetAddressList *recipients;
- const char *recipients_string;
+ char *recipients_string;
const char *reply_to_string;
const char *reply_to_string;
if (recipients_string) {
sp->map_key (sp, "To");
sp->string (sp, recipients_string);
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);
}
recipients = g_mime_message_get_recipients (message, GMIME_RECIPIENT_TYPE_CC);
if (recipients_string) {
sp->map_key (sp, "Cc");
sp->string (sp, recipients_string);
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);
}
recipients = g_mime_message_get_recipients (message, GMIME_RECIPIENT_TYPE_BCC);
if (recipients_string) {
sp->map_key (sp, "Bcc");
sp->string (sp, recipients_string);
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);
}
reply_to_string = g_mime_message_get_reply_to (message);
sp->string (sp, g_mime_object_get_header (GMIME_OBJECT (message), "References"));
} else {
sp->map_key (sp, "Date");
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);