Call daemon() only in parent and before proc_exec() to avoid orphaning child
authortobhe <tobhe@openbsd.org>
Mon, 8 Apr 2024 12:48:26 +0000 (12:48 +0000)
committertobhe <tobhe@openbsd.org>
Mon, 8 Apr 2024 12:48:26 +0000 (12:48 +0000)
processes. Synced from relayd.

ok mlarkin@ dv@

usr.sbin/vmd/proc.c
usr.sbin/vmd/vmd.c

index ac6455d..6b50501 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: proc.c,v 1.23 2024/02/20 21:40:37 dv Exp $    */
+/*     $OpenBSD: proc.c,v 1.24 2024/04/08 12:48:26 tobhe Exp $ */
 
 /*
  * Copyright (c) 2010 - 2016 Reyk Floeter <reyk@openbsd.org>
@@ -205,6 +205,9 @@ proc_init(struct privsep *ps, struct privsep_proc *procs, unsigned int nproc,
                privsep_process = PROC_PARENT;
                proc_setup(ps, procs, nproc);
 
+               if (!debug && daemon(0, 0) == -1)
+                       fatal("failed to daemonize");
+
                /*
                 * Create the children sockets so we can use them
                 * to distribute the rest of the socketpair()s using
index 887e1cc..665a6b4 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: vmd.c,v 1.155 2024/02/05 21:58:09 dv Exp $    */
+/*     $OpenBSD: vmd.c,v 1.156 2024/04/08 12:48:26 tobhe Exp $ */
 
 /*
  * Copyright (c) 2015 Reyk Floeter <reyk@openbsd.org>
@@ -947,9 +947,6 @@ main(int argc, char **argv)
        proc_init(ps, procs, nitems(procs), env->vmd_debug, argc0, argv,
            proc_id);
 
-       if (!env->vmd_debug && daemon(0, 0) == -1)
-               fatal("can't daemonize");
-
        if (ps->ps_noaction == 0)
                log_info("startup");