diff options
author | 2016-09-06 16:34:29 +0000 | |
---|---|---|
committer | 2016-09-06 16:34:29 +0000 | |
commit | 366735a18765c2410f3cb37ff804b6a9bc03279a (patch) | |
tree | c86a747134e9cbe075b8e35fa127bc870133728e | |
parent | If you have a paragraph: (diff) | |
download | wireguard-openbsd-366735a18765c2410f3cb37ff804b6a9bc03279a.tar.xz wireguard-openbsd-366735a18765c2410f3cb37ff804b6a9bc03279a.zip |
use closefrom() before reexec to make sure the new process only gets
the imsg socket.
ok gilles@ sunil@
-rw-r--r-- | usr.sbin/smtpd/smtpd.c | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/usr.sbin/smtpd/smtpd.c b/usr.sbin/smtpd/smtpd.c index c638e043e8c..661915d935d 100644 --- a/usr.sbin/smtpd/smtpd.c +++ b/usr.sbin/smtpd/smtpd.c @@ -1,4 +1,4 @@ -/* $OpenBSD: smtpd.c,v 1.284 2016/09/04 16:10:31 eric Exp $ */ +/* $OpenBSD: smtpd.c,v 1.285 2016/09/06 16:34:29 eric Exp $ */ /* * Copyright (c) 2008 Gilles Chehade <gilles@poolp.org> @@ -810,11 +810,12 @@ start_child(int save_argc, char **save_argv, char *rexec) return p; } - close(sp[1]); - if (dup2(sp[0], 3) == -1) fatal("%s: dup2", rexec); + if (closefrom(4) == -1) + fatal("%s: closefrom", rexec); + for (argc = 0; argc < save_argc; argc++) argv[argc] = save_argv[argc]; argv[argc++] = "-x"; |