1
0
mirror of https://git.tartarus.org/simon/putty.git synced 2025-01-09 17:38:00 +00:00

scp_recv_filedata: handle EOF more sensibly.

xfer_download_data could return actuallen as either 0 or -1 to
indicate EOF. Now it's always 0, and scp_recv_filedata actually checks
for that case and reports an error.
This commit is contained in:
Simon Tatham 2017-02-15 21:39:23 +00:00
parent 717129b0f2
commit 5d852585a1
2 changed files with 8 additions and 0 deletions

7
pscp.c
View File

@ -1560,6 +1560,13 @@ int scp_recv_filedata(char *data, int len)
}
if (xfer_download_data(scp_sftp_xfer, &vbuf, &actuallen)) {
if (actuallen <= 0) {
tell_user(stderr, "pscp: %s while reading",
actuallen < 0 ? "error" : "end of file");
errs++;
sfree(vbuf);
return -1;
}
/*
* This assertion relies on the fact that the natural
* block size used in the xfer manager is at most that

1
sftp.c
View File

@ -1226,6 +1226,7 @@ int xfer_download_gotpkt(struct fxp_xfer *xfer, struct sftp_packet *pktin)
if ((rr->retlen < 0 && fxp_error_type()==SSH_FX_EOF) || rr->retlen == 0) {
xfer->eof = TRUE;
rr->retlen = 0;
rr->complete = -1;
#ifdef DEBUG_DOWNLOAD
printf("setting eof\n");