Fix use after free
authorColin Leroy <colin@colino.net>
Mon, 24 May 2021 08:30:58 +0000 (10:30 +0200)
committerColin Leroy <colin@colino.net>
Mon, 24 May 2021 08:56:17 +0000 (10:56 +0200)
src/summaryview.c

index 0cee051afdb0ca6863b32e73a662b8e293a1929a..0c2c567d6a7824ee405531dbdf6cfa551cb88347 100644 (file)
@@ -4986,18 +4986,18 @@ void summary_save_as(SummaryView *summaryview)
        manage_window_focus_in(summaryview->window, NULL, NULL);
 
        if (filename && !g_utf8_validate(filename, -1, NULL)) {
-               gchar *oldstr = filename;
-               filename = conv_codeset_strdup(filename,
+               gchar *converted_filename = conv_codeset_strdup(filename,
                                               conv_get_locale_charset_str(),
                                               CS_UTF_8);
-               if (!filename) {
+               if (!converted_filename) {
                        g_warning("summary_save_as(): failed to convert character set.");
-                       filename = g_strdup(oldstr);
+               } else {
+                       g_free(filename);
+                       filename = converted_filename;
                }
-               dest = filename;
-               g_free(filename);
-       } else
-               dest = filename;
+       }
+
+       dest = filename;
        filename = NULL;
        if (!dest) return;
        if (prefs_common.attach_save_dir && *prefs_common.attach_save_dir)