diff options
author | Andreas Schneider <asn@cryptomilk.org> | 2015-01-20 19:07:54 +0100 |
---|---|---|
committer | Andreas Schneider <asn@cryptomilk.org> | 2015-01-20 19:17:02 +0100 |
commit | 884bff5bdc4848a91f2f0d522160e916aa669562 (patch) | |
tree | 97cd150732f726250742662587876b4531a23eba | |
parent | 08c33d6aeba3561a7e64ff9bc2135ed9a1f657d3 (diff) | |
download | libssh-884bff5bdc4848a91f2f0d522160e916aa669562.tar.gz libssh-884bff5bdc4848a91f2f0d522160e916aa669562.tar.xz libssh-884bff5bdc4848a91f2f0d522160e916aa669562.zip |
sftp: Fix sftp endianess bugs.
BUG: https://red.libssh.org/issues/179
This is a backport of 6019cf1bed63849e49174f9a51512a8b0fe84052.
Signed-off-by: Andreas Schneider <asn@cryptomilk.org>
-rw-r--r-- | src/sftp.c | 40 |
1 files changed, 20 insertions, 20 deletions
@@ -765,7 +765,7 @@ static sftp_message sftp_dequeue(sftp_session sftp, uint32_t id){ * Returns a new ID ready to use in a request */ static inline uint32_t sftp_get_new_id(sftp_session session) { - return ++session->id_counter; + ++session->id_counter; } static sftp_status_message parse_status_msg(sftp_message msg){ @@ -890,7 +890,7 @@ sftp_dir sftp_opendir(sftp_session sftp, const char *path){ } id = sftp_get_new_id(sftp); - if (buffer_add_u32(payload, id) < 0 || + if (buffer_add_u32(payload, htonl(id)) < 0 || buffer_add_ssh_string(payload, path_s) < 0) { ssh_set_error_oom(sftp->session); ssh_buffer_free(payload); @@ -1437,7 +1437,7 @@ sftp_attributes sftp_readdir(sftp_session sftp, sftp_dir dir) { } id = sftp_get_new_id(sftp); - if (buffer_add_u32(payload, id) < 0 || + if (buffer_add_u32(payload, htonl(id)) < 0 || buffer_add_ssh_string(payload, dir->handle) < 0) { ssh_set_error_oom(sftp->session); ssh_buffer_free(payload); @@ -1561,7 +1561,7 @@ static int sftp_handle_close(sftp_session sftp, ssh_string handle) { } id = sftp_get_new_id(sftp); - if (buffer_add_u32(buffer, id) < 0 || + if (buffer_add_u32(buffer, htonl(id)) < 0 || buffer_add_ssh_string(buffer, handle) < 0) { ssh_set_error_oom(sftp->session); ssh_buffer_free(buffer); @@ -1685,7 +1685,7 @@ sftp_file sftp_open(sftp_session sftp, const char *file, int flags, sftp_flags |= SSH_FXF_EXCL; SSH_LOG(SSH_LOG_PACKET,"Opening file %s with sftp flags %x",file,sftp_flags); id = sftp_get_new_id(sftp); - if (buffer_add_u32(buffer, id) < 0 || + if (buffer_add_u32(buffer, htonl(id)) < 0 || buffer_add_ssh_string(buffer, filename) < 0) { ssh_set_error_oom(sftp->session); ssh_buffer_free(buffer); @@ -1767,7 +1767,7 @@ ssize_t sftp_read(sftp_file handle, void *buf, size_t count) { return -1; } id = sftp_get_new_id(handle->sftp); - if (buffer_add_u32(buffer, id) < 0 || + if (buffer_add_u32(buffer, htonl(id)) < 0 || buffer_add_ssh_string(buffer, handle->handle) < 0 || buffer_add_u64(buffer, htonll(handle->offset)) < 0 || buffer_add_u32(buffer,htonl(count)) < 0) { @@ -1860,7 +1860,7 @@ int sftp_async_read_begin(sftp_file file, uint32_t len){ } id = sftp_get_new_id(sftp); - if (buffer_add_u32(buffer, id) < 0 || + if (buffer_add_u32(buffer, htonl(id)) < 0 || buffer_add_ssh_string(buffer, file->handle) < 0 || buffer_add_u64(buffer, htonll(file->offset)) < 0 || buffer_add_u32(buffer, htonl(len)) < 0) { @@ -1987,7 +1987,7 @@ ssize_t sftp_write(sftp_file file, const void *buf, size_t count) { ssh_string_fill(datastring, buf, count); id = sftp_get_new_id(file->sftp); - if (buffer_add_u32(buffer, id) < 0 || + if (buffer_add_u32(buffer, htonl(id)) < 0 || buffer_add_ssh_string(buffer, file->handle) < 0 || buffer_add_u64(buffer, htonll(file->offset)) < 0 || buffer_add_ssh_string(buffer, datastring) < 0) { @@ -2106,7 +2106,7 @@ int sftp_unlink(sftp_session sftp, const char *file) { } id = sftp_get_new_id(sftp); - if (buffer_add_u32(buffer, id) < 0 || + if (buffer_add_u32(buffer, htonl(id)) < 0 || buffer_add_ssh_string(buffer, filename) < 0) { ssh_set_error_oom(sftp->session); ssh_buffer_free(buffer); @@ -2183,7 +2183,7 @@ int sftp_rmdir(sftp_session sftp, const char *directory) { } id = sftp_get_new_id(sftp); - if (buffer_add_u32(buffer, id) < 0 || + if (buffer_add_u32(buffer, htonl(id)) < 0 || buffer_add_ssh_string(buffer, filename) < 0) { ssh_set_error_oom(sftp->session); ssh_buffer_free(buffer); @@ -2263,7 +2263,7 @@ int sftp_mkdir(sftp_session sftp, const char *directory, mode_t mode) { attr.flags = SSH_FILEXFER_ATTR_PERMISSIONS; id = sftp_get_new_id(sftp); - if (buffer_add_u32(buffer, id) < 0 || + if (buffer_add_u32(buffer, htonl(id)) < 0 || buffer_add_ssh_string(buffer, path) < 0 || buffer_add_attributes(buffer, &attr) < 0 || sftp_packet_write(sftp, SSH_FXP_MKDIR, buffer) < 0) { @@ -2358,7 +2358,7 @@ int sftp_rename(sftp_session sftp, const char *original, const char *newname) { } id = sftp_get_new_id(sftp); - if (buffer_add_u32(buffer, id) < 0 || + if (buffer_add_u32(buffer, htonl(id)) < 0 || buffer_add_ssh_string(buffer, oldpath) < 0 || buffer_add_ssh_string(buffer, newpath) < 0 || /* POSIX rename atomically replaces newpath, we should do the same @@ -2443,7 +2443,7 @@ int sftp_setstat(sftp_session sftp, const char *file, sftp_attributes attr) { } id = sftp_get_new_id(sftp); - if (buffer_add_u32(buffer, id) < 0 || + if (buffer_add_u32(buffer, htonl(id)) < 0 || buffer_add_ssh_string(buffer, path) < 0 || buffer_add_attributes(buffer, attr) < 0) { ssh_set_error_oom(sftp->session); @@ -2576,7 +2576,7 @@ int sftp_symlink(sftp_session sftp, const char *target, const char *dest) { } id = sftp_get_new_id(sftp); - if (buffer_add_u32(buffer, id) < 0) { + if (buffer_add_u32(buffer, htonl(id)) < 0) { ssh_set_error_oom(sftp->session); ssh_buffer_free(buffer); ssh_string_free(dest_s); @@ -2687,7 +2687,7 @@ char *sftp_readlink(sftp_session sftp, const char *path) { } id = sftp_get_new_id(sftp); - if (buffer_add_u32(buffer, id) < 0 || + if (buffer_add_u32(buffer, htonl(id)) < 0 || buffer_add_ssh_string(buffer, path_s) < 0) { ssh_set_error_oom(sftp->session); ssh_buffer_free(buffer); @@ -2874,7 +2874,7 @@ sftp_statvfs_t sftp_statvfs(sftp_session sftp, const char *path) { } id = sftp_get_new_id(sftp); - if (buffer_add_u32(buffer, id) < 0 || + if (buffer_add_u32(buffer, htonl(id)) < 0 || buffer_add_ssh_string(buffer, ext) < 0 || buffer_add_ssh_string(buffer, pathstr) < 0) { ssh_set_error_oom(sftp->session); @@ -2953,7 +2953,7 @@ sftp_statvfs_t sftp_fstatvfs(sftp_file file) { } id = sftp_get_new_id(sftp); - if (buffer_add_u32(buffer, id) < 0 || + if (buffer_add_u32(buffer, htonl(id)) < 0 || buffer_add_ssh_string(buffer, ext) < 0 || buffer_add_ssh_string(buffer, file->handle) < 0) { ssh_set_error_oom(sftp->session); @@ -3042,7 +3042,7 @@ char *sftp_canonicalize_path(sftp_session sftp, const char *path) { } id = sftp_get_new_id(sftp); - if (buffer_add_u32(buffer, id) < 0 || + if (buffer_add_u32(buffer, htonl(id)) < 0 || buffer_add_ssh_string(buffer, pathstr) < 0) { ssh_set_error_oom(sftp->session); ssh_buffer_free(buffer); @@ -3120,7 +3120,7 @@ static sftp_attributes sftp_xstat(sftp_session sftp, const char *path, } id = sftp_get_new_id(sftp); - if (buffer_add_u32(buffer, id) < 0 || + if (buffer_add_u32(buffer, htonl(id)) < 0 || buffer_add_ssh_string(buffer, pathstr) < 0) { ssh_set_error_oom(sftp->session); ssh_buffer_free(buffer); @@ -3187,7 +3187,7 @@ sftp_attributes sftp_fstat(sftp_file file) { } id = sftp_get_new_id(file->sftp); - if (buffer_add_u32(buffer, id) < 0 || + if (buffer_add_u32(buffer, htonl(id)) < 0 || buffer_add_ssh_string(buffer, file->handle) < 0) { ssh_set_error_oom(file->sftp->session); ssh_buffer_free(buffer); |