diff options
author | Jonas Jonsson <jonas@websystem.se> | 2011-08-28 23:00:06 +0200 |
---|---|---|
committer | Andreas Schneider <asn@cryptomilk.org> | 2011-08-29 10:05:26 +0200 |
commit | d1df255df46b0b59ce5abfa1b2a4b971ebb4fb64 (patch) | |
tree | 9df23bdb14974747f91ad15e7b6d3616d868e96e /src/sftp.c | |
parent | a060a235a4168357ee309fef297176409fcda703 (diff) | |
download | libssh-d1df255df46b0b59ce5abfa1b2a4b971ebb4fb64.tar.gz libssh-d1df255df46b0b59ce5abfa1b2a4b971ebb4fb64.tar.xz libssh-d1df255df46b0b59ce5abfa1b2a4b971ebb4fb64.zip |
sftp: Handle short reads of sftp_async_read().
sftp_async_read() and sftp_async_read_begin() assume that the whole read
will be successful but when this is not the case, the offset will be
wrong.
Signed-off-by: Andreas Schneider <asn@cryptomilk.org>
Diffstat (limited to 'src/sftp.c')
-rw-r--r-- | src/sftp.c | 5 |
1 files changed, 2 insertions, 3 deletions
@@ -1945,9 +1945,8 @@ int sftp_async_read(sftp_file file, void *data, uint32_t size, uint32_t id){ return SSH_ERROR; } len = ssh_string_len(datastring); - //handle->offset+=len; - /* We already have set the offset previously. All we can do is warn that the expected len - * and effective lengths are different */ + /* Update the offset with the correct value */ + file->offset = file->offset - (size - len); memcpy(data, ssh_string_data(datastring), len); ssh_string_free(datastring); sftp_leave_function(); |