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
This commit is contained in:
Alexander Larsson
2018-05-15 20:24:03 +02:00
committed by Atomic Bot
parent d35c081f6d
commit ade25b0ff8
3 changed files with 14 additions and 5 deletions

View File

@@ -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;
}

View File

@@ -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);

View File

@@ -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);