mirror of
https://github.com/flatpak/flatpak.git
synced 2026-05-12 01:49:17 -04:00
dir: Fix a GString leak
This commit is contained in:
committed by
Alexander Larsson
parent
284510eabb
commit
a0188dee79
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user