Quantcast

[PATCH] fix memory leaks in notmuch-show.c:format_headers_sprinter()

classic Classic list List threaded Threaded
2 messages Options
Jeffrey Stedfast-2 Jeffrey Stedfast-2
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

[PATCH] fix memory leaks in notmuch-show.c:format_headers_sprinter()

Hey guys,

Was just grepping through notmuch sources and discovered what I think are memory leaks in notmuch-show.c’s format_headers_sprinter() code.

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.

Attached is a patch which fixes these leaks.

Hope this helps,

Jeff



_______________________________________________
notmuch mailing list
[hidden email]
https://notmuchmail.org/mailman/listinfo/notmuch

memleak-fixes.patch (2K) Download Attachment
Tomi Ollila-2 Tomi Ollila-2
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: [PATCH] fix memory leaks in notmuch-show.c:format_headers_sprinter()

On Thu, Mar 16 2017, Jeffrey Stedfast <[hidden email]> wrote:

> Hey guys,
>
> Was just grepping through notmuch sources and discovered what I think are memory leaks in notmuch-show.c’s format_headers_sprinter() code.
>
> 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.

Change looks good, tests pass (it even applied with git am).

The commit message could be amended like so, that subject line and the
paragraph above this were left...

Tomi


>
> Attached is a patch which fixes these leaks.
>
> Hope this helps,

>
> Jeff
>
>
> diff --git a/notmuch-show.c b/notmuch-show.c
> index aff93803..095595e2 100644
> --- a/notmuch-show.c
> +++ b/notmuch-show.c
> @@ -202,8 +202,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);
>  
> @@ -218,6 +219,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);
> @@ -225,6 +227,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);
> @@ -232,6 +235,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);
> @@ -248,7 +252,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);
> _______________________________________________
> notmuch mailing list
> [hidden email]
> https://notmuchmail.org/mailman/listinfo/notmuch
_______________________________________________
notmuch mailing list
[hidden email]
https://notmuchmail.org/mailman/listinfo/notmuch
Loading...