summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPhaedrus Leeds <mwleeds@protonmail.com>2021-05-02 21:03:40 -0500
committerAlexander Larsson <alexander.larsson@gmail.com>2021-05-04 10:23:13 +0200
commita0188dee79ef5de5ec4e7ff4970d0c07f0d711c3 (patch)
tree9b3c94beecb467d43e199e456f0de8456d6e0409
parent284510eabb0c2f2c48a41082bac23960b9ecd1e8 (diff)
downloadflatpak-a0188dee79ef5de5ec4e7ff4970d0c07f0d711c3.tar.gz
dir: Fix a GString leak
-rw-r--r--common/flatpak-dir.c27
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