Download raw body.
proc.c: more syncing
Like in relayd, we can also drop a few dup2()s, setsid() and setpgid()
that should be taken care of by calling daemon() earlier in proc_init().
See relayd/proc.c v1.43
ok?
Index: sbin/iked/proc.c
===================================================================
RCS file: /cvs/src/sbin/iked/proc.c,v
diff -u -p -r1.43 proc.c
--- sbin/iked/proc.c 8 Apr 2024 12:50:05 -0000 1.43
+++ sbin/iked/proc.c 8 Apr 2024 13:24:23 -0000
@@ -39,7 +39,7 @@
enum privsep_procid privsep_process;
void proc_exec(struct privsep *, struct privsep_proc *, unsigned int, int,
- int, char **);
+ char **);
void proc_setup(struct privsep *, struct privsep_proc *, unsigned int);
void proc_open(struct privsep *, int, int);
void proc_accept(struct privsep *, int, enum privsep_procid,
@@ -70,7 +70,7 @@ proc_getid(struct privsep_proc *procs, u
void
proc_exec(struct privsep *ps, struct privsep_proc *procs, unsigned int nproc,
- int debug, int argc, char **argv)
+ int argc, char **argv)
{
unsigned int proc, nargc, i, proc_i;
char **nargv;
@@ -119,10 +119,6 @@ proc_exec(struct privsep *ps, struct pri
fatal("%s: fork", __func__);
break;
case 0:
- /* First create a new session */
- if (setsid() == -1)
- fatal("setsid");
-
/* Prepare parent socket. */
if (fd != PROC_PARENT_SOCK_FILENO) {
if (dup2(fd, PROC_PARENT_SOCK_FILENO)
@@ -131,16 +127,6 @@ proc_exec(struct privsep *ps, struct pri
} else if (fcntl(fd, F_SETFD, 0) == -1)
fatal("fcntl");
- /* Daemons detach from terminal. */
- if (!debug && (fd =
- open(_PATH_DEVNULL, O_RDWR, 0)) != -1) {
- (void)dup2(fd, STDIN_FILENO);
- (void)dup2(fd, STDOUT_FILENO);
- (void)dup2(fd, STDERR_FILENO);
- if (fd > 2)
- (void)close(fd);
- }
-
execvp(argv[0], nargv);
fatal("%s: execvp", __func__);
break;
@@ -260,7 +246,7 @@ proc_init(struct privsep *ps, struct pri
}
/* Engage! */
- proc_exec(ps, procs, nproc, debug, argc, argv);
+ proc_exec(ps, procs, nproc, argc, argv);
return;
}
Index: usr.sbin/httpd/proc.c
===================================================================
RCS file: /cvs/src/usr.sbin/httpd/proc.c,v
diff -u -p -r1.44 proc.c
--- usr.sbin/httpd/proc.c 8 Apr 2024 12:45:18 -0000 1.44
+++ usr.sbin/httpd/proc.c 8 Apr 2024 13:24:23 -0000
@@ -37,7 +37,7 @@
#include "httpd.h"
void proc_exec(struct privsep *, struct privsep_proc *, unsigned int, int,
- int, char **);
+ char **);
void proc_setup(struct privsep *, struct privsep_proc *, unsigned int);
void proc_open(struct privsep *, int, int);
void proc_accept(struct privsep *, int, enum privsep_procid,
@@ -68,7 +68,7 @@ proc_getid(struct privsep_proc *procs, u
void
proc_exec(struct privsep *ps, struct privsep_proc *procs, unsigned int nproc,
- int debug, int argc, char **argv)
+ int argc, char **argv)
{
unsigned int proc, nargc, i, proc_i;
char **nargv;
@@ -117,10 +117,6 @@ proc_exec(struct privsep *ps, struct pri
fatal("%s: fork", __func__);
break;
case 0:
- /* First create a new session */
- if (setsid() == -1)
- fatal("setsid");
-
/* Prepare parent socket. */
if (fd != PROC_PARENT_SOCK_FILENO) {
if (dup2(fd, PROC_PARENT_SOCK_FILENO)
@@ -129,16 +125,6 @@ proc_exec(struct privsep *ps, struct pri
} else if (fcntl(fd, F_SETFD, 0) == -1)
fatal("fcntl");
- /* Daemons detach from terminal. */
- if (!debug && (fd =
- open(_PATH_DEVNULL, O_RDWR, 0)) != -1) {
- (void)dup2(fd, STDIN_FILENO);
- (void)dup2(fd, STDOUT_FILENO);
- (void)dup2(fd, STDERR_FILENO);
- if (fd > 2)
- (void)close(fd);
- }
-
execvp(argv[0], nargv);
fatal("%s: execvp", __func__);
break;
@@ -232,7 +218,7 @@ proc_init(struct privsep *ps, struct pri
}
/* Engage! */
- proc_exec(ps, procs, nproc, debug, argc, argv);
+ proc_exec(ps, procs, nproc, argc, argv);
return;
}
@@ -525,9 +511,6 @@ proc_run(struct privsep *ps, struct priv
struct control_sock *rcs;
log_procinit(p->p_title);
-
- /* Set the process group of the current process */
- setpgid(0, 0);
if (p->p_id == PROC_CONTROL && ps->ps_instance == 0) {
if (control_init(ps, &ps->ps_csock) == -1)
Index: usr.sbin/vmd/proc.c
===================================================================
RCS file: /cvs/src/usr.sbin/vmd/proc.c,v
diff -u -p -r1.24 proc.c
--- usr.sbin/vmd/proc.c 8 Apr 2024 12:48:26 -0000 1.24
+++ usr.sbin/vmd/proc.c 8 Apr 2024 13:24:23 -0000
@@ -37,7 +37,7 @@
#include "proc.h"
void proc_exec(struct privsep *, struct privsep_proc *, unsigned int, int,
- int, char **);
+ char **);
void proc_setup(struct privsep *, struct privsep_proc *, unsigned int);
void proc_open(struct privsep *, int, int);
void proc_accept(struct privsep *, int, enum privsep_procid,
@@ -68,7 +68,7 @@ proc_getid(struct privsep_proc *procs, u
void
proc_exec(struct privsep *ps, struct privsep_proc *procs, unsigned int nproc,
- int debug, int argc, char **argv)
+ int argc, char **argv)
{
unsigned int proc, nargc, i, proc_i;
char **nargv;
@@ -117,10 +117,6 @@ proc_exec(struct privsep *ps, struct pri
fatal("%s: fork", __func__);
break;
case 0:
- /* First create a new session */
- if (setsid() == -1)
- fatal("setsid");
-
/* Prepare parent socket. */
if (fd != PROC_PARENT_SOCK_FILENO) {
if (dup2(fd, PROC_PARENT_SOCK_FILENO)
@@ -129,16 +125,6 @@ proc_exec(struct privsep *ps, struct pri
} else if (fcntl(fd, F_SETFD, 0) == -1)
fatal("fcntl");
- /* Daemons detach from terminal. */
- if (!debug && (fd =
- open(_PATH_DEVNULL, O_RDWR, 0)) != -1) {
- (void)dup2(fd, STDIN_FILENO);
- (void)dup2(fd, STDOUT_FILENO);
- (void)dup2(fd, STDERR_FILENO);
- if (fd > 2)
- (void)close(fd);
- }
-
execvp(argv[0], nargv);
fatal("%s: execvp", __func__);
break;
@@ -232,7 +218,7 @@ proc_init(struct privsep *ps, struct pri
}
/* Engage! */
- proc_exec(ps, procs, nproc, debug, argc, argv);
+ proc_exec(ps, procs, nproc, argc, argv);
return;
}
@@ -518,9 +504,6 @@ proc_run(struct privsep *ps, struct priv
struct control_sock *rcs;
log_procinit("%s", p->p_title);
-
- /* Set the process group of the current process */
- setpgid(0, 0);
if (p->p_id == PROC_CONTROL && ps->ps_instance == 0) {
if (control_init(ps, &ps->ps_csock) == -1)
Index: usr.sbin/snmpd/proc.c
===================================================================
RCS file: /cvs/src/usr.sbin/snmpd/proc.c,v
diff -u -p -r1.31 proc.c
--- usr.sbin/snmpd/proc.c 8 Apr 2024 13:18:54 -0000 1.31
+++ usr.sbin/snmpd/proc.c 8 Apr 2024 13:24:23 -0000
@@ -37,7 +37,7 @@
#include "snmpd.h"
void proc_exec(struct privsep *, struct privsep_proc *, unsigned int, int,
- int, char **);
+ char **);
void proc_setup(struct privsep *, struct privsep_proc *, unsigned int);
void proc_open(struct privsep *, int, int);
void proc_accept(struct privsep *, int, enum privsep_procid,
@@ -68,7 +68,7 @@ proc_getid(struct privsep_proc *procs, u
void
proc_exec(struct privsep *ps, struct privsep_proc *procs, unsigned int nproc,
- int debug, int argc, char **argv)
+ int argc, char **argv)
{
unsigned int proc, nargc, i, proc_i;
char **nargv;
@@ -117,10 +117,6 @@ proc_exec(struct privsep *ps, struct pri
fatal("%s: fork", __func__);
break;
case 0:
- /* First create a new session */
- if (setsid() == -1)
- fatal("setsid");
-
/* Prepare parent socket. */
if (fd != PROC_PARENT_SOCK_FILENO) {
if (dup2(fd, PROC_PARENT_SOCK_FILENO)
@@ -129,16 +125,6 @@ proc_exec(struct privsep *ps, struct pri
} else if (fcntl(fd, F_SETFD, 0) == -1)
fatal("fcntl");
- /* Daemons detach from terminal. */
- if (!debug && (fd =
- open(_PATH_DEVNULL, O_RDWR, 0)) != -1) {
- (void)dup2(fd, STDIN_FILENO);
- (void)dup2(fd, STDOUT_FILENO);
- (void)dup2(fd, STDERR_FILENO);
- if (fd > 2)
- (void)close(fd);
- }
-
execvp(argv[0], nargv);
fatal("%s: execvp", __func__);
break;
@@ -232,7 +218,7 @@ proc_init(struct privsep *ps, struct pri
}
/* Engage! */
- proc_exec(ps, procs, nproc, debug, argc, argv);
+ proc_exec(ps, procs, nproc, argc, argv);
return;
}
proc.c: more syncing