mirror of
https://git.libssh.org/projects/libssh.git
synced 2026-02-09 09:54:25 +09: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:
@@ -965,11 +965,18 @@ process_read(sftp_client_message client_msg)
|
|||||||
SSH_LOG(SSH_LOG_PROTOCOL, "read file error!");
|
SSH_LOG(SSH_LOG_PROTOCOL, "read file error!");
|
||||||
free(buffer);
|
free(buffer);
|
||||||
return SSH_ERROR;
|
return SSH_ERROR;
|
||||||
|
} else if (readn == 0) {
|
||||||
|
/* no more data to read, EOF ? */
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
allreadn += readn;
|
allreadn += readn;
|
||||||
} while (allreadn < (ssize_t)client_msg->len);
|
} 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);
|
free(buffer);
|
||||||
return SSH_OK;
|
return SSH_OK;
|
||||||
|
|||||||
Reference in New Issue
Block a user