From f09b475c4b88df879a77b4fc933a2dd9af32098d Mon Sep 17 00:00:00 2001 From: Jakub Jelen Date: Fri, 24 Mar 2023 20:28:09 +0100 Subject: [PATCH] sftpserver: Properly handle empty files and EOF while reading Signed-off-by: Jakub Jelen Reviewed-by: Andreas Schneider Reviewed-by: Anderson Toshiyuki Sasaki --- src/sftpserver.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/sftpserver.c b/src/sftpserver.c index 7fc170ef..d51dcf03 100644 --- a/src/sftpserver.c +++ b/src/sftpserver.c @@ -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;