From ade25b0ff86b4fa54204cf70aac53c37e73455a9 Mon Sep 17 00:00:00 2001 From: Alexander Larsson Date: Tue, 15 May 2018 20:24:03 +0200 Subject: [PATCH] Support --data=fd format in flatpak_bwrap_bundle_args This is useful for the dbus-proxy, and complements the old --data fd format for bubblewrap. Closes: #1676 Approved by: alexlarsson --- common/flatpak-bwrap.c | 12 ++++++++++-- common/flatpak-bwrap.h | 1 + common/flatpak-run.c | 6 +++--- 3 files changed, 14 insertions(+), 5 deletions(-) diff --git a/common/flatpak-bwrap.c b/common/flatpak-bwrap.c index 58bc94c3..5de5db03 100644 --- a/common/flatpak-bwrap.c +++ b/common/flatpak-bwrap.c @@ -266,6 +266,7 @@ gboolean flatpak_bwrap_bundle_args (FlatpakBwrap *bwrap, int start, int end, + gboolean one_arg, GError **error) { gchar *data; @@ -299,8 +300,15 @@ flatpak_bwrap_bundle_args (FlatpakBwrap *bwrap, flatpak_bwrap_add_fd (bwrap, fd); g_ptr_array_remove_range (bwrap->argv, start, end - start); - g_ptr_array_insert (bwrap->argv, start, g_strdup ("--args")); - g_ptr_array_insert (bwrap->argv, start+1, g_strdup_printf ("%d", fd)); + if (one_arg) + { + g_ptr_array_insert (bwrap->argv, start, g_strdup_printf ("--args=%d", fd)); + } + else + { + g_ptr_array_insert (bwrap->argv, start, g_strdup ("--args")); + g_ptr_array_insert (bwrap->argv, start+1, g_strdup_printf ("%d", fd)); + } return TRUE; } diff --git a/common/flatpak-bwrap.h b/common/flatpak-bwrap.h index fc53a76b..9d552275 100644 --- a/common/flatpak-bwrap.h +++ b/common/flatpak-bwrap.h @@ -72,6 +72,7 @@ void flatpak_bwrap_add_bind_arg (FlatpakBwrap *bwrap, gboolean flatpak_bwrap_bundle_args (FlatpakBwrap *bwrap, int start, int end, + gboolean one_arg, GError **error); void flatpak_bwrap_child_setup_cb (gpointer user_data); diff --git a/common/flatpak-run.c b/common/flatpak-run.c index a9f512f6..6f73cb1b 100644 --- a/common/flatpak-run.c +++ b/common/flatpak-run.c @@ -713,7 +713,7 @@ add_bwrap_wrapper (FlatpakBwrap *bwrap, not be unmounted from the namespace when the namespace dies. */ flatpak_bwrap_add_args_data_fd (bwrap, "--file", glnx_steal_fd (&app_info_fd), "/.flatpak-info"); - if (!flatpak_bwrap_bundle_args (bwrap, 1, -1, error)) + if (!flatpak_bwrap_bundle_args (bwrap, 1, -1, FALSE, error)) return FALSE; return TRUE; @@ -2541,7 +2541,7 @@ regenerate_ld_cache (GPtrArray *base_argv_array, "--bind", flatpak_file_get_path_cached (ld_so_dir), "/run/ld-so-cache-dir", NULL); - if (!flatpak_bwrap_bundle_args (bwrap, 1, -1, error)) + if (!flatpak_bwrap_bundle_args (bwrap, 1, -1, FALSE, error)) return -1; flatpak_bwrap_add_args (bwrap, @@ -2886,7 +2886,7 @@ flatpak_run_app (const char *app_ref, command = default_command; } - if (!flatpak_bwrap_bundle_args (bwrap, 1, -1, error)) + if (!flatpak_bwrap_bundle_args (bwrap, 1, -1, FALSE, error)) return FALSE; flatpak_bwrap_add_arg (bwrap, command);