diff options
author | djm@openbsd.org@openbsd.org <djm@openbsd.org@openbsd.org> | 2017-11-01 00:04:15 +0000 |
---|---|---|
committer | Damien Miller <djm@mindrot.org> | 2017-11-01 11:08:56 +1100 |
commit | 939b30ba23848b572e15bf92f0f1a3d9cf3acc2b (patch) | |
tree | 4caeb4111553d39035d4628ab21bebdbb423dc17 /ssh.c | |
parent | f21455a084f9cc3942cf1bde64055a4916849fed (diff) |
upstream commit
fix broken stdout in ControlPersist mode, introduced by me in
r1.467 and reported by Alf Schlichting
OpenBSD-Commit-ID: 3750a16e02108fc25f747e4ebcedb7123c1ef509
Diffstat (limited to 'ssh.c')
-rw-r--r-- | ssh.c | 18 |
1 files changed, 10 insertions, 8 deletions
@@ -1,4 +1,4 @@ -/* $OpenBSD: ssh.c,v 1.468 2017/10/27 01:57:06 djm Exp $ */ +/* $OpenBSD: ssh.c,v 1.469 2017/11/01 00:04:15 djm Exp $ */ /* * Author: Tatu Ylonen <ylo@cs.hut.fi> * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland @@ -1906,13 +1906,15 @@ ssh_session2(struct ssh *ssh, struct passwd *pw) * NB. this can only happen after LocalCommand has completed, * as it may want to write to stdout. */ - if ((devnull = open(_PATH_DEVNULL, O_WRONLY)) == -1) - error("%s: open %s: %s", __func__, - _PATH_DEVNULL, strerror(errno)); - if (dup2(devnull, STDOUT_FILENO) < 0) - fatal("%s: dup2() stdout failed", __func__); - if (devnull > STDERR_FILENO) - close(devnull); + if (!need_controlpersist_detach) { + if ((devnull = open(_PATH_DEVNULL, O_WRONLY)) == -1) + error("%s: open %s: %s", __func__, + _PATH_DEVNULL, strerror(errno)); + if (dup2(devnull, STDOUT_FILENO) < 0) + fatal("%s: dup2() stdout failed", __func__); + if (devnull > STDERR_FILENO) + close(devnull); + } /* * If requested and we are not interested in replies to remote |