From: Michael Tremer Date: Mon, 8 Aug 2022 15:29:18 +0000 (+0000) Subject: build: Create a jail for each build X-Git-Tag: 0.9.28~578 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=753ddf74cf76d0c5f6c9a00d0d6d303f2dfb3e65;p=pakfire.git build: Create a jail for each build Signed-off-by: Michael Tremer --- diff --git a/src/libpakfire/build.c b/src/libpakfire/build.c index 5041f4aca..3c0d9b76d 100644 --- a/src/libpakfire/build.c +++ b/src/libpakfire/build.c @@ -54,6 +54,9 @@ struct pakfire_build { // cgroup struct pakfire_cgroup* cgroup; + + // Jail + struct pakfire_jail* jail; }; static const char* stages[] = { @@ -784,6 +787,9 @@ static void pakfire_build_free(struct pakfire_build* build) { if (build->cgroup) pakfire_cgroup_unref(build->cgroup); + if (build->jail) + pakfire_jail_unref(build->jail); + pakfire_unref(build->pakfire); free(build); } @@ -836,6 +842,23 @@ static int pakfire_build_setup_cgroup(struct pakfire_build* build) { return 0; } +/* + Sets up a new jail for this build +*/ +static int pakfire_build_setup_jail(struct pakfire_build* build) { + int r; + + // Create a new jail + r = pakfire_jail_create(&build->jail, build->pakfire, 0); + if (r) { + ERROR(build->pakfire, "Could not create jail for build %s: %m\n", build->_id); + return r; + } + + // Done + return 0; +} + PAKFIRE_EXPORT int pakfire_build_create(struct pakfire_build** build, struct pakfire* pakfire, const char* id, int flags) { int r; @@ -864,6 +887,11 @@ PAKFIRE_EXPORT int pakfire_build_create(struct pakfire_build** build, if (r) goto ERROR; + // Create jail + r = pakfire_build_setup_jail(b); + if (r) + goto ERROR; + *build = b; return 0;