From 2deb8f1e11162b954daabe647fab5fea19bfa727 Mon Sep 17 00:00:00 2001 From: Alexander Larsson Date: Tue, 15 May 2018 14:46:35 +0200 Subject: [PATCH] flatpak_quote_argv: Add len argument This way we can quote a partial array Closes: #1676 Approved by: alexlarsson --- common/flatpak-run.c | 10 +++++----- common/flatpak-utils.c | 8 ++++++-- common/flatpak-utils.h | 3 ++- 3 files changed, 13 insertions(+), 8 deletions(-) diff --git a/common/flatpak-run.c b/common/flatpak-run.c index 3c02fc90..f30408c7 100644 --- a/common/flatpak-run.c +++ b/common/flatpak-run.c @@ -1853,7 +1853,7 @@ prepend_bwrap_argv_wrapper (GPtrArray *argv, g_ptr_array_add (bwrap_args, NULL); { - g_autofree char *commandline = flatpak_quote_argv ((const char **) bwrap_args->pdata); + g_autofree char *commandline = flatpak_quote_argv ((const char **) bwrap_args->pdata, -1); flatpak_debug2 ("bwrap args '%s'", commandline); } @@ -1957,7 +1957,7 @@ add_dbus_proxy_args (GPtrArray *argv_array, if (!prepend_bwrap_argv_wrapper (dbus_proxy_argv, app_info_fd, &bwrap_args_fd, error)) return FALSE; - commandline = flatpak_quote_argv ((const char **) dbus_proxy_argv->pdata); + commandline = flatpak_quote_argv ((const char **) dbus_proxy_argv->pdata, -1); flatpak_debug2 ("Running '%s'", commandline); spawn_data.sync_fd = sync_fds[1]; @@ -2720,7 +2720,7 @@ regenerate_ld_cache (GPtrArray *base_argv_array, g_ptr_array_add (bwrap->argv, NULL); - commandline = flatpak_quote_argv ((const char **) bwrap->argv->pdata); + commandline = flatpak_quote_argv ((const char **) bwrap->argv->pdata, -1); flatpak_debug2 ("Running: '%s'", commandline); combined_fd_array = g_array_new (FALSE, TRUE, sizeof (int)); @@ -3083,8 +3083,8 @@ flatpak_run_app (const char *app_ref, g_ptr_array_add (real_argv_array, NULL); g_ptr_array_add (bwrap->argv, NULL); - commandline = flatpak_quote_argv ((const char **) bwrap->argv->pdata); - commandline2 = flatpak_quote_argv (((const char **) real_argv_array->pdata) + commandline_2_start); + commandline = flatpak_quote_argv ((const char **) bwrap->argv->pdata, -1); + commandline2 = flatpak_quote_argv (((const char **) real_argv_array->pdata) + commandline_2_start, -1); flatpak_debug2 ("Running '%s %s'", commandline, commandline2); if ((flags & FLATPAK_RUN_FLAG_BACKGROUND) != 0) diff --git a/common/flatpak-utils.c b/common/flatpak-utils.c index 291af50c..657a844b 100644 --- a/common/flatpak-utils.c +++ b/common/flatpak-utils.c @@ -1754,12 +1754,16 @@ needs_quoting (const char *arg) } char * -flatpak_quote_argv (const char *argv[]) +flatpak_quote_argv (const char *argv[], + gssize len) { GString *res = g_string_new (""); int i; - for (i = 0; argv[i] != NULL; i++) + if (len == -1) + len = g_strv_length ((char **)argv); + + for (i = 0; i < len; i++) { if (i != 0) g_string_append_c (res, ' '); diff --git a/common/flatpak-utils.h b/common/flatpak-utils.h index f8d9fb45..e1c79a3b 100644 --- a/common/flatpak-utils.h +++ b/common/flatpak-utils.h @@ -414,7 +414,8 @@ GList *flatpak_list_extensions (GKeyFile *metakey, const char *arch, const char *branch); -char * flatpak_quote_argv (const char *argv[]); +char * flatpak_quote_argv (const char *argv[], + gssize len); gboolean flatpak_file_arg_has_suffix (const char *arg, const char *suffix); const char *flatpak_file_get_path_cached (GFile *file);