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:
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]);