diff options
author | Phaedrus Leeds <mwleeds@protonmail.com> | 2021-05-02 21:03:40 -0500 |
---|---|---|
committer | Alexander Larsson <alexander.larsson@gmail.com> | 2021-05-04 10:23:13 +0200 |
commit | a0188dee79ef5de5ec4e7ff4970d0c07f0d711c3 (patch) | |
tree | 9b3c94beecb467d43e199e456f0de8456d6e0409 | |
parent | 284510eabb0c2f2c48a41082bac23960b9ecd1e8 (diff) | |
download | flatpak-a0188dee79ef5de5ec4e7ff4970d0c07f0d711c3.tar.gz |
dir: Fix a GString leak
-rw-r--r-- | common/flatpak-dir.c | 27 |
1 files changed, 10 insertions, 17 deletions
diff --git a/common/flatpak-dir.c b/common/flatpak-dir.c index 3aabd846..bfe14546 100644 --- a/common/flatpak-dir.c +++ b/common/flatpak-dir.c @@ -6964,7 +6964,6 @@ export_desktop_file (const char *app, GCancellable *cancellable, GError **error) { - gboolean ret = FALSE; glnx_autofd int desktop_fd = -1; g_autofree char *tmpfile_name = g_strdup_printf ("export-desktop-XXXXXX"); g_autoptr(GOutputStream) out_stream = NULL; @@ -6977,21 +6976,20 @@ export_desktop_file (const char *app, gint old_argc; g_auto(GStrv) old_argv = NULL; g_auto(GStrv) groups = NULL; - GString *new_exec = NULL; g_autofree char *escaped_app = maybe_quote (app); g_autofree char *escaped_branch = maybe_quote (branch); g_autofree char *escaped_arch = maybe_quote (arch); int i; if (!flatpak_openat_noatime (parent_fd, name, &desktop_fd, cancellable, error)) - goto out; + return FALSE; if (!read_fd (desktop_fd, stat_buf, &data, &data_len, error)) - goto out; + return FALSE; keyfile = g_key_file_new (); if (!g_key_file_load_from_data (keyfile, data, data_len, G_KEY_FILE_KEEP_TRANSLATIONS, error)) - goto out; + return FALSE; if (g_str_has_suffix (name, ".service")) { @@ -7091,6 +7089,7 @@ export_desktop_file (const char *app, for (i = 0; groups[i] != NULL; i++) { + g_autoptr(GString) new_exec = NULL; g_auto(GStrv) flatpak_run_opts = g_key_file_get_string_list (keyfile, groups[i], "X-Flatpak-RunOptions", NULL, NULL); g_autofree char *flatpak_run_args = format_flatpak_run_args_from_run_opts (flatpak_run_opts); @@ -7142,7 +7141,7 @@ export_desktop_file (const char *app, { flatpak_fail_error (error, FLATPAK_ERROR_EXPORT_FAILED, _("Invalid Exec argument %s"), arg); - goto out; + return FALSE; } else g_string_append_printf (new_exec, " %s", arg); @@ -7159,27 +7158,21 @@ export_desktop_file (const char *app, new_data = g_key_file_to_data (keyfile, &new_data_len, error); if (new_data == NULL) - goto out; + return FALSE; if (!flatpak_open_in_tmpdir_at (parent_fd, 0755, tmpfile_name, &out_stream, cancellable, error)) - goto out; + return FALSE; if (!g_output_stream_write_all (out_stream, new_data, new_data_len, NULL, cancellable, error)) - goto out; + return FALSE; if (!g_output_stream_close (out_stream, cancellable, error)) - goto out; + return FALSE; if (target) *target = g_steal_pointer (&tmpfile_name); - ret = TRUE; -out: - - if (new_exec != NULL) - g_string_free (new_exec, TRUE); - - return ret; + return TRUE; } static gboolean |