1
0
mirror of https://git.libssh.org/projects/libssh.git synced 2025-12-09 15:41:10 +03:00

sftpserver: Properly handle empty files and EOF while reading

Signed-off-by: Jakub Jelen <jjelen@redhat.com>
Reviewed-by: Andreas Schneider <asn@cryptomilk.org>
Reviewed-by: Anderson Toshiyuki Sasaki <ansasaki@redhat.com>
This commit is contained in:
Jakub Jelen
2023-03-24 20:28:09 +01:00
parent 3fc30681f4
commit f09b475c4b

View File

@@ -965,11 +965,18 @@ process_read(sftp_client_message client_msg)
SSH_LOG(SSH_LOG_PROTOCOL, "read file error!");
free(buffer);
return SSH_ERROR;
} else if (readn == 0) {
/* no more data to read, EOF ? */
break;
}
allreadn += readn;
} while (allreadn < (ssize_t)client_msg->len);
sftp_reply_data(client_msg, buffer, allreadn);
if (allreadn > 0) {
sftp_reply_data(client_msg, buffer, allreadn);
} else {
sftp_reply_status(client_msg, SSH_FX_EOF, NULL);
}
free(buffer);
return SSH_OK;