talons

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

commit fa8b9e14d9f3452e48737ef1170858407f1b3226
parent eba430d7ae598ce1ab77a5da727d3d98dd6c0073
Author: wwp <subscript@free.fr>
Date:   Sun, 12 Sep 2021 13:40:06 +0200

Fix CID 1491070: resource leak. Use a static GString to feed cmd.mailto
instead of a dynamically allocated struct that will never be freed.

Diffstat:
Msrc/main.c | 11+++++------
1 file changed, 5 insertions(+), 6 deletions(-)

diff --git a/src/main.c b/src/main.c @@ -1837,10 +1837,9 @@ static void exit_claws(MainWindow *mainwin) exit(1); \ } -static GString * parse_cmd_compose_from_file(const gchar *fn) +static void parse_cmd_compose_from_file(const gchar *fn, GString *body) { GString *headers = g_string_new(NULL); - GString *body = g_string_new(NULL); gchar *to = NULL; gchar *h; gchar *v; @@ -1897,8 +1896,6 @@ static GString * parse_cmd_compose_from_file(const gchar *fn) /* append the remaining headers */ g_string_append(body, headers->str); g_string_free(headers, TRUE); - - return body; } #undef G_PRINT_EXIT @@ -1915,6 +1912,8 @@ static void parse_cmd_opt_error(char *errstr, char* optstr) exit(1); } +static GString mailto; /* used to feed cmd.compose_mailto when --compose-from-file is used */ + static void parse_cmd_opt(int argc, char *argv[]) { AttachInfo *ainfo; @@ -1933,9 +1932,9 @@ static void parse_cmd_opt(int argc, char *argv[]) if (i+1 < argc) { const gchar *p = argv[i+1]; - GString *mailto = parse_cmd_compose_from_file(p); + parse_cmd_compose_from_file(p, &mailto); cmd.compose = TRUE; - cmd.compose_mailto = mailto->str; + cmd.compose_mailto = mailto.str; i++; } else { parse_cmd_opt_error(_("Missing file argument for option %s"), argv[i]);