diff --git a/ChangeLog b/ChangeLog index e09afd65a..43f808038 100644 --- a/ChangeLog +++ b/ChangeLog @@ -13,6 +13,10 @@ stuff. Change suggested by Mark Miller - (bal) Small fix to scp. %lu vs %ld - (bal) NeXTStep lacks S_ISLNK. Plus split up S_IS* + - (djm) OpenBSD CVS Sync + - djm@cvs.openbsd.org 2001/03/19 03:52:51 + [sftp-client.c] + Report ssh connection closing correctly; ok deraadt@ 20010318 - (bal) Fixed scp type casing issue which causes "scp: protocol error: @@ -4612,4 +4616,4 @@ - Wrote replacements for strlcpy and mkdtemp - Released 1.0pre1 -$Id: ChangeLog,v 1.979 2001/03/19 03:12:25 mouring Exp $ +$Id: ChangeLog,v 1.980 2001/03/19 11:29:46 djm Exp $ diff --git a/sftp-client.c b/sftp-client.c index b0007a734..7be73d29f 100644 --- a/sftp-client.c +++ b/sftp-client.c @@ -29,7 +29,7 @@ /* XXX: copy between two remote sites */ #include "includes.h" -RCSID("$OpenBSD: sftp-client.c,v 1.14 2001/03/16 08:16:17 djm Exp $"); +RCSID("$OpenBSD: sftp-client.c,v 1.15 2001/03/19 10:52:51 djm Exp $"); #include "ssh.h" #include "buffer.h" @@ -77,7 +77,9 @@ get_msg(int fd, Buffer *m) unsigned char buf[4096]; len = atomicio(read, fd, buf, 4); - if (len != 4) + if (len == 0) + fatal("Connection closed"); + else if (len == -1) fatal("Couldn't read packet: %s", strerror(errno)); msg_len = GET_32BIT(buf); @@ -86,7 +88,9 @@ get_msg(int fd, Buffer *m) while (msg_len) { len = atomicio(read, fd, buf, MIN(msg_len, sizeof(buf))); - if (len <= 0) + if (len == 0) + fatal("Connection closed"); + else if (len == -1) fatal("Couldn't read packet: %s", strerror(errno)); msg_len -= len;