GUACAMOLE-818: Merge break SFTP directory JSON at blob boundaries. Do not skip entries.

This commit is contained in:
Virtually Nick 2020-02-24 21:14:49 -05:00 committed by GitHub
commit 83d2f30f8b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -586,7 +586,6 @@ static int guac_common_ssh_sftp_ls_ack_handler(guac_user* user,
guac_stream* stream, char* message, guac_protocol_status status) { guac_stream* stream, char* message, guac_protocol_status status) {
int bytes_read; int bytes_read;
int blob_written = 0;
char filename[GUAC_COMMON_SSH_SFTP_MAX_PATH]; char filename[GUAC_COMMON_SSH_SFTP_MAX_PATH];
LIBSSH2_SFTP_ATTRIBUTES attributes; LIBSSH2_SFTP_ATTRIBUTES attributes;
@ -608,8 +607,7 @@ static int guac_common_ssh_sftp_ls_ack_handler(guac_user* user,
/* While directory entries remain */ /* While directory entries remain */
while ((bytes_read = libssh2_sftp_readdir(list_state->directory, while ((bytes_read = libssh2_sftp_readdir(list_state->directory,
filename, sizeof(filename), &attributes)) > 0 filename, sizeof(filename), &attributes)) > 0) {
&& !blob_written) {
char absolute_path[GUAC_COMMON_SSH_SFTP_MAX_PATH]; char absolute_path[GUAC_COMMON_SSH_SFTP_MAX_PATH];
@ -639,9 +637,10 @@ static int guac_common_ssh_sftp_ls_ack_handler(guac_user* user,
else else
mimetype = "application/octet-stream"; mimetype = "application/octet-stream";
/* Write entry */ /* Write entry, waiting for next ack if a blob is written */
blob_written |= guac_common_json_write_property(user, stream, if (guac_common_json_write_property(user, stream,
&list_state->json_state, absolute_path, mimetype); &list_state->json_state, absolute_path, mimetype))
break;
} }