From d1df255df46b0b59ce5abfa1b2a4b971ebb4fb64 Mon Sep 17 00:00:00 2001 From: Jonas Jonsson Date: Sun, 28 Aug 2011 23:00:06 +0200 Subject: 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 --- src/sftp.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/sftp.c b/src/sftp.c index 99798e7..4c249e3 100644 --- a/src/sftp.c +++ b/src/sftp.c @@ -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(); -- cgit