summaryrefslogtreecommitdiff
path: root/ssh.c
diff options
context:
space:
mode:
authorDarren Tucker <dtucker@zip.com.au>2004-11-05 20:19:51 +1100
committerDarren Tucker <dtucker@zip.com.au>2004-11-05 20:19:51 +1100
commit39207a46b4b0d3d9c3ef8d03e9d3c6d5e11df9ec (patch)
tree1683ceebcef8bf41cf8a5808c336c28eb81c45ed /ssh.c
parentf30e1acc62f884f59779d0cdc5d74933934443c4 (diff)
downloadopenssh-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.c13
1 files changed, 11 insertions, 2 deletions
diff --git a/ssh.c b/ssh.c
index 7859b0f7..c231c5fa 100644
--- a/ssh.c
+++ b/ssh.c
@@ -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) +