talons

Fork of Claws Mail https://www.claws-mail
Log | Files | Refs | README | LICENSE

commit c75453be80856def79d80ff03f22817c2f7033fa
parent 84ce49b634b869e01a5ee084e4cd8efc8bda0c72
Author: wwp <subscript@free.fr>
Date:   Thu, 30 Sep 2021 20:08:21 +0200

Fix CID 1491120, 1491212, 1491255, 1491280, 1491284, 1491318: resource leaks.

Diffstat:
Msrc/compose.c | 35++++++++++++++++++++++++++---------
1 file changed, 26 insertions(+), 9 deletions(-)

diff --git a/src/compose.c b/src/compose.c @@ -2323,8 +2323,9 @@ Compose *compose_reedit(MsgInfo *msginfo, gboolean batch) if (orig_item != NULL) { replyinfo = folder_item_get_msginfo_by_msgid(orig_item, tokens[2]); } - g_strfreev(tokens); } + if (tokens) + g_strfreev(tokens); g_free(queueheader_buf); } if (!procheader_get_header_from_msginfo(msginfo, &queueheader_buf, @@ -2335,8 +2336,9 @@ Compose *compose_reedit(MsgInfo *msginfo, gboolean batch) if (orig_item != NULL) { fwdinfo = folder_item_get_msginfo_by_msgid(orig_item, tokens[2]); } - g_strfreev(tokens); } + if (tokens) + g_strfreev(tokens); g_free(queueheader_buf); } /* Get manual headers */ @@ -2346,8 +2348,9 @@ Compose *compose_reedit(MsgInfo *msginfo, gboolean batch) if (listmh && *listmh != '\0') { debug_print("Got manual headers: %s\n", listmh); manual_headers = procheader_entries_from_str(listmh); - g_free(listmh); } + if (listmh) + g_free(listmh); g_free(queueheader_buf); } } else { @@ -2359,11 +2362,14 @@ Compose *compose_reedit(MsgInfo *msginfo, gboolean batch) if (!procheader_get_header_from_msginfo(msginfo, &from, "FROM:")) { extract_address(from); account = account_find_from_address(from, FALSE); - g_free(from); } + if (from) + g_free(from); } if (!account) { account = cur_account; + if (manual_headers) + g_free(manual_headers); } cm_return_val_if_fail(account != NULL, NULL); @@ -2422,6 +2428,8 @@ Compose *compose_reedit(MsgInfo *msginfo, gboolean batch) if (compose_parse_header(compose, msginfo) < 0) { compose->updating = FALSE; compose_destroy(compose); + if (manual_headers) + g_free(manual_headers); return NULL; } compose_reedit_set_entry(compose, msginfo); @@ -4163,8 +4171,10 @@ static gchar * compose_get_itemized_chars(GtkTextBuffer *buffer, GString *item_chars = g_string_new(""); gchar *str = NULL; - if (gtk_text_iter_ends_line(&iter)) + if (gtk_text_iter_ends_line(&iter)) { + g_string_free(item_chars, FALSE); return NULL; + } while (1) { len++; @@ -5688,7 +5698,7 @@ static gint compose_write_to_file(Compose *compose, FILE *fp, gint action, gbool { GtkTextBuffer *buffer; GtkTextIter start, end, tmp; - gchar *chars, *tmp_enc_file, *content; + gchar *chars, *tmp_enc_file = NULL, *content; gchar *buf, *msg; const gchar *out_codeset; EncodingType encoding = ENC_UNKNOWN; @@ -5971,10 +5981,14 @@ static gint compose_write_to_file(Compose *compose, FILE *fp, gint action, gbool if (!privacy_encrypt(compose->privacy_system, mimemsg, compose->encdata)) { debug_print("Couldn't encrypt mime structure: %s.\n", privacy_get_error()); + if (tmp_enc_file) + g_free(tmp_enc_file); return COMPOSE_QUEUE_ERROR_ENCRYPT_FAILED; } } } + if (tmp_enc_file) + g_free(tmp_enc_file); procmime_write_mimeinfo(mimemsg, fp); @@ -6524,10 +6538,12 @@ static gchar *compose_quote_list_of_addresses(gchar *str) if (result == NULL) result = g_strdup((faddr != NULL)? faddr: spec); else { - result = g_strconcat(result, + gchar *tmp = g_strconcat(result, ", ", (faddr != NULL)? faddr: spec, NULL); + g_free(result); + result = tmp; } if (faddr != NULL) { g_free(faddr); @@ -10232,8 +10248,9 @@ static void compose_register_draft(MsgInfo *info) FILE *fp = claws_fopen(filepath, "ab"); if (fp) { - fprintf(fp, "%s\t%d\n", folder_item_get_identifier(info->folder), - info->msgnum); + gchar *name = folder_item_get_identifier(info->folder); + fprintf(fp, "%s\t%d\n", name, info->msgnum); + g_free(name); claws_fclose(fp); }