[master] fec25970c Fix worker_tmpdir when the unix jail is active

Nils Goroll nils.goroll at uplex.de
Mon May 27 17:31:04 UTC 2024


commit fec25970c8addc28fb90d4dcd8d4fea592a03b13
Author: Nils Goroll <nils.goroll at uplex.de>
Date:   Mon May 27 19:29:40 2024 +0200

    Fix worker_tmpdir when the unix jail is active
    
    I misread the code and did not try running varnishtest as root :|

diff --git a/bin/varnishd/mgt/mgt.h b/bin/varnishd/mgt/mgt.h
index 5b22eb85c..5b75a2da3 100644
--- a/bin/varnishd/mgt/mgt.h
+++ b/bin/varnishd/mgt/mgt.h
@@ -131,6 +131,7 @@ enum jail_fixfd_e {
 	JAIL_FIXFD_FILE,
 	JAIL_FIXFD_VSMMGT,
 	JAIL_FIXFD_VSMWRK,
+	JAIL_FIXFD_WRKTMP,
 };
 
 typedef int jail_init_f(char **);
diff --git a/bin/varnishd/mgt/mgt_jail_unix.c b/bin/varnishd/mgt/mgt_jail_unix.c
index f84d63c2e..ecb51ffac 100644
--- a/bin/varnishd/mgt/mgt_jail_unix.c
+++ b/bin/varnishd/mgt/mgt_jail_unix.c
@@ -304,6 +304,7 @@ vju_fixfd(int fd, enum jail_fixfd_e what)
 		AZ(fchown(fd, vju_uid, vju_gid));
 		break;
 	case JAIL_FIXFD_VSMWRK:
+	case JAIL_FIXFD_WRKTMP:
 		AZ(fchmod(fd, 0750));
 		AZ(fchown(fd, vju_wrkuid, vju_wrkgid));
 		break;
diff --git a/bin/varnishd/mgt/mgt_main.c b/bin/varnishd/mgt/mgt_main.c
index 1b2ddbc2f..d6fe6bef3 100644
--- a/bin/varnishd/mgt/mgt_main.c
+++ b/bin/varnishd/mgt/mgt_main.c
@@ -889,6 +889,12 @@ main(int argc, char * const *argv)
 		    workdir, VAS_errtxt(errno));
 	}
 
+	o = open("worker_tmpdir", O_RDONLY);
+	VJ_master(JAIL_MASTER_SYSTEM);
+	VJ_fix_fd(o, JAIL_FIXFD_WRKTMP);
+	VJ_master(JAIL_MASTER_LOW);
+	closefd(&o);
+
 	if (C_flag)
 		AZ(atexit(mgt_Cflag_atexit));
 


More information about the varnish-commit mailing list