diff options
author | Darren Tucker <dtucker@zip.com.au> | 2004-11-05 20:19:51 +1100 |
---|---|---|
committer | Darren Tucker <dtucker@zip.com.au> | 2004-11-05 20:19:51 +1100 |
commit | 39207a46b4b0d3d9c3ef8d03e9d3c6d5e11df9ec (patch) | |
tree | 1683ceebcef8bf41cf8a5808c336c28eb81c45ed /ssh.c | |
parent | f30e1acc62f884f59779d0cdc5d74933934443c4 (diff) | |
download | openssh-git-39207a46b4b0d3d9c3ef8d03e9d3c6d5e11df9ec.tar.gz |
- djm@cvs.openbsd.org 2004/09/23 13:00:04
[ssh.c]
correctly honour -n in multiplex client mode; spotted by sturm@ ok markus@
Diffstat (limited to 'ssh.c')
-rw-r--r-- | ssh.c | 13 |
1 files changed, 11 insertions, 2 deletions
@@ -40,7 +40,7 @@ */ #include "includes.h" -RCSID("$OpenBSD: ssh.c,v 1.227 2004/09/15 00:46:01 deraadt Exp $"); +RCSID("$OpenBSD: ssh.c,v 1.228 2004/09/23 13:00:04 djm Exp $"); #include <openssl/evp.h> #include <openssl/err.h> @@ -1249,11 +1249,20 @@ static void control_client(const char *path) { struct sockaddr_un addr; - int i, r, sock, exitval, num_env, addr_len; + int i, r, fd, sock, exitval, num_env, addr_len; Buffer m; char *cp; extern char **environ; + if (stdin_null_flag) { + if ((fd = open(_PATH_DEVNULL, O_RDONLY)) == -1) + fatal("open(/dev/null): %s", strerror(errno)); + if (dup2(fd, STDIN_FILENO) == -1) + fatal("dup2: %s", strerror(errno)); + if (fd > STDERR_FILENO) + close(fd); + } + memset(&addr, '\0', sizeof(addr)); addr.sun_family = AF_UNIX; addr_len = offsetof(struct sockaddr_un, sun_path) + |