diff options
author | dtucker@openbsd.org <dtucker@openbsd.org> | 2018-05-25 05:20:59 +0200 |
---|---|---|
committer | Damien Miller <djm@mindrot.org> | 2018-05-25 06:27:50 +0200 |
commit | 1da5934b860ac0378d52d3035b22b6670f6a967e (patch) | |
tree | 4065d9fd7aebb64f0b8efdfedc7c57f4c419cf43 | |
parent | Permit getuid()/geteuid() syscalls. (diff) | |
download | openssh-1da5934b860ac0378d52d3035b22b6670f6a967e.tar.xz openssh-1da5934b860ac0378d52d3035b22b6670f6a967e.zip |
upstream: If select() fails in ssh_packet_read_seqnr go directly to
the error path instead of trying to read from the socket on the way out,
which resets errno and causes the true error to be misreported. ok djm@
OpenBSD-Commit-ID: 2614edaadbd05a957aa977728aa7a030af7c6f0a
-rw-r--r-- | packet.c | 8 |
1 files changed, 5 insertions, 3 deletions
@@ -1,4 +1,4 @@ -/* $OpenBSD: packet.c,v 1.269 2017/12/18 23:13:42 djm Exp $ */ +/* $OpenBSD: packet.c,v 1.270 2018/05/25 03:20:59 dtucker Exp $ */ /* * Author: Tatu Ylonen <ylo@cs.hut.fi> * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland @@ -1338,8 +1338,10 @@ ssh_packet_read_seqnr(struct ssh *ssh, u_char *typep, u_int32_t *seqnr_p) NULL, NULL, timeoutp)) >= 0) break; if (errno != EAGAIN && errno != EINTR && - errno != EWOULDBLOCK) - break; + errno != EWOULDBLOCK) { + r = SSH_ERR_SYSTEM_ERROR; + goto out; + } if (state->packet_timeout_ms == -1) continue; ms_subtract_diff(&start, &ms_remain); |