]> git.ipfire.org Git - people/stevee/pakfire.git/commitdiff
execute: Use new jail to run shell
authorMichael Tremer <michael.tremer@ipfire.org>
Tue, 2 Aug 2022 17:58:25 +0000 (17:58 +0000)
committerMichael Tremer <michael.tremer@ipfire.org>
Tue, 2 Aug 2022 17:58:25 +0000 (17:58 +0000)
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
src/libpakfire/execute.c

index 30714b75b208a57707526b6f2e34bc1dd9949858..ba9441f1c2d30cfb627ee7f3b6a6affcb06fa6a0 100644 (file)
@@ -43,6 +43,7 @@
 #include <pakfire/arch.h>
 #include <pakfire/cgroup.h>
 #include <pakfire/execute.h>
+#include <pakfire/jail.h>
 #include <pakfire/logging.h>
 #include <pakfire/mount.h>
 #include <pakfire/private.h>
@@ -998,14 +999,26 @@ out:
 }
 
 int pakfire_execute_shell(struct pakfire* pakfire) {
+       struct pakfire_jail* jail = NULL;
+       int r;
+
+       // Create a new jail
+       r = pakfire_jail_create(&jail, pakfire, PAKFIRE_JAIL_INTERACTIVE);
+       if (r)
+               goto ERROR;
+
        const char* argv[] = {
                "/bin/bash", "--login", NULL,
        };
 
-       const int flags =
-               PAKFIRE_EXECUTE_INTERACTIVE | PAKFIRE_EXECUTE_ENABLE_NETWORK;
+       // Execute /bin/bash
+       r = pakfire_jail_exec(jail, argv);
+
+ERROR:
+       if (jail)
+               pakfire_jail_unref(jail);
 
-       return pakfire_execute(pakfire, argv, NULL, flags, NULL, NULL);
+       return r;
 }
 
 int pakfire_execute_ldconfig(struct pakfire* pakfire) {