From: Michael Tremer Date: Tue, 19 Dec 2023 12:00:30 +0000 (+0000) Subject: jail: Make PTY forwarding a flag and remove interactive bool X-Git-Tag: 0.9.30~1277 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=1190bb5f739050622c0eb966b3b1451047731e4a;p=pakfire.git jail: Make PTY forwarding a flag and remove interactive bool Signed-off-by: Michael Tremer --- diff --git a/src/libpakfire/include/pakfire/jail.h b/src/libpakfire/include/pakfire/jail.h index 380cc1504..d5d2feb2a 100644 --- a/src/libpakfire/include/pakfire/jail.h +++ b/src/libpakfire/include/pakfire/jail.h @@ -59,9 +59,10 @@ typedef int (*pakfire_jail_communicate_out) (struct pakfire* pakfire, void* data, int priority, const char* line, const size_t length); enum pakfire_jail_exec_flags { - PAKFIRE_JAIL_HAS_NETWORKING = (1 << 0), - PAKFIRE_JAIL_NOENT_OK = (1 << 1), - PAKFIRE_JAIL_HAS_LOOP_DEVICES = (1 << 2), + PAKFIRE_JAIL_PTY_FORWARDING = (1 << 0), + PAKFIRE_JAIL_HAS_NETWORKING = (1 << 1), + PAKFIRE_JAIL_NOENT_OK = (1 << 2), + PAKFIRE_JAIL_HAS_LOOP_DEVICES = (1 << 3), }; int pakfire_jail_exec( diff --git a/src/libpakfire/jail.c b/src/libpakfire/jail.c index 1547ff9dc..b42594cf7 100644 --- a/src/libpakfire/jail.c +++ b/src/libpakfire/jail.c @@ -2248,7 +2248,6 @@ static int pakfire_jail_child(struct pakfire_jail* jail, struct pakfire_jail_exe // Run a command in the jail static int __pakfire_jail_exec(struct pakfire_jail* jail, const char* argv[], - const int interactive, pakfire_jail_communicate_in communicate_in, pakfire_jail_communicate_out communicate_out, void* data, int flags) { @@ -2300,7 +2299,7 @@ static int __pakfire_jail_exec(struct pakfire_jail* jail, const char* argv[], DEBUG(jail->pakfire, "Executing jail...\n"); // Enable networking in interactive mode - if (interactive) + if (ctx.flags & PAKFIRE_JAIL_PTY_FORWARDING) ctx.flags |= PAKFIRE_JAIL_HAS_NETWORKING; /* @@ -2457,19 +2456,21 @@ PAKFIRE_EXPORT int pakfire_jail_exec( pakfire_jail_communicate_in callback_in, pakfire_jail_communicate_out callback_out, void* data, int flags) { - return __pakfire_jail_exec(jail, argv, 0, callback_in, callback_out, data, flags); + return __pakfire_jail_exec(jail, argv, callback_in, callback_out, data, flags); } static int pakfire_jail_exec_interactive( struct pakfire_jail* jail, const char* argv[], int flags) { int r; + flags |= PAKFIRE_JAIL_PTY_FORWARDING; + // Setup interactive stuff r = pakfire_jail_setup_interactive_env(jail); if (r) return r; - return __pakfire_jail_exec(jail, argv, 1, NULL, NULL, NULL, flags); + return __pakfire_jail_exec(jail, argv, NULL, NULL, NULL, flags); } int pakfire_jail_exec_script(struct pakfire_jail* jail,