From 36bd977772ea0df7159ff207f89564bfccd3b0ca Mon Sep 17 00:00:00 2001 From: Sebastian Wick Date: Fri, 6 Feb 2026 17:56:21 +0100 Subject: [PATCH] flatpak-bwrap: Add dup-ing variant flatpak_bwrap_add_args_data_fd_dup --- common/flatpak-bwrap-private.h | 5 +++++ common/flatpak-bwrap.c | 20 ++++++++++++++++++++ 2 files changed, 25 insertions(+) diff --git a/common/flatpak-bwrap-private.h b/common/flatpak-bwrap-private.h index 9effed8a..d7a73304 100644 --- a/common/flatpak-bwrap-private.h +++ b/common/flatpak-bwrap-private.h @@ -63,6 +63,11 @@ void flatpak_bwrap_append_bwrap (FlatpakBwrap *bwrap, FlatpakBwrap *other); /* Steals the fds */ void flatpak_bwrap_append_args (FlatpakBwrap *bwrap, GPtrArray *other_array); +gboolean flatpak_bwrap_add_args_data_fd_dup (FlatpakBwrap *bwrap, + const char *op, + int fd, + const char *path_optional, + GError **error); void flatpak_bwrap_add_args_data_fd (FlatpakBwrap *bwrap, const char *op, int fd, diff --git a/common/flatpak-bwrap.c b/common/flatpak-bwrap.c index f7e8b10e..a3d29782 100644 --- a/common/flatpak-bwrap.c +++ b/common/flatpak-bwrap.c @@ -146,6 +146,26 @@ flatpak_bwrap_add_fd (FlatpakBwrap *bwrap, g_array_append_val (bwrap->fds, fd); } +gboolean +flatpak_bwrap_add_args_data_fd_dup (FlatpakBwrap *bwrap, + const char *op, + int fd, + const char *path_optional, + GError **error) +{ + glnx_autofd int fd_dup = -1; + + fd_dup = fcntl (fd, F_DUPFD_CLOEXEC, 3); + if (fd_dup < 0) + return glnx_throw_errno_prefix (error, "Failed to dup fd %d", fd); + + flatpak_bwrap_add_args_data_fd (bwrap, + op, + g_steal_fd (&fd_dup), + path_optional); + return TRUE; +} + void flatpak_bwrap_add_arg_printf (FlatpakBwrap *bwrap, const char *format, ...) {