mirror of
https://git.libssh.org/projects/libssh.git
synced 2026-02-11 02:38:09 +09:00
sftp: Reformat sftp_packet_read()
Signed-off-by: Andreas Schneider <asn@cryptomilk.org>
(cherry picked from commit afc14fe003)
This commit is contained in:
15
src/sftp.c
15
src/sftp.c
@@ -313,7 +313,8 @@ int sftp_packet_write(sftp_session sftp, uint8_t type, ssh_buffer payload){
|
||||
return size;
|
||||
}
|
||||
|
||||
sftp_packet sftp_packet_read(sftp_session sftp) {
|
||||
sftp_packet sftp_packet_read(sftp_session sftp)
|
||||
{
|
||||
unsigned char buffer[MAX_BUF_SIZE];
|
||||
sftp_packet packet = NULL;
|
||||
uint32_t tmp;
|
||||
@@ -338,10 +339,10 @@ sftp_packet sftp_packet_read(sftp_session sftp) {
|
||||
ssh_set_error_oom(sftp->session);
|
||||
goto error;
|
||||
}
|
||||
r=0;
|
||||
r = 0;
|
||||
do {
|
||||
// read from channel until 4 bytes have been read or an error occurs
|
||||
s=ssh_channel_read(sftp->channel, buffer+r, 4-r, 0);
|
||||
s = ssh_channel_read(sftp->channel, buffer + r, 4 - r, 0);
|
||||
if (s < 0) {
|
||||
goto error;
|
||||
} else if (s == 0) {
|
||||
@@ -352,7 +353,7 @@ sftp_packet sftp_packet_read(sftp_session sftp) {
|
||||
} else {
|
||||
r += s;
|
||||
}
|
||||
} while (r<4);
|
||||
} while (r < 4);
|
||||
ssh_buffer_add_data(packet->payload, buffer, r);
|
||||
if (ssh_buffer_get_u32(packet->payload, &tmp) != sizeof(uint32_t)) {
|
||||
ssh_set_error(sftp->session, SSH_FATAL, "Short sftp packet!");
|
||||
@@ -385,8 +386,10 @@ sftp_packet sftp_packet_read(sftp_session sftp) {
|
||||
goto error;
|
||||
}
|
||||
while (size > 0 && size < UINT_MAX) {
|
||||
r=ssh_channel_read(sftp->channel,buffer,
|
||||
sizeof(buffer)>size ? size:sizeof(buffer),0);
|
||||
r = ssh_channel_read(sftp->channel,
|
||||
buffer,
|
||||
sizeof(buffer) > size ? size : sizeof(buffer),
|
||||
0);
|
||||
|
||||
if (r < 0) {
|
||||
/* TODO: check if there are cases where an error needs to be set here */
|
||||
|
||||
Reference in New Issue
Block a user