sftp: Reformat sftp_packet_read()

Signed-off-by: Andreas Schneider <asn@cryptomilk.org>
This commit is contained in:
Andreas Schneider
2018-09-03 14:34:38 +02:00
parent 79a3fcac72
commit afc14fe003

View File

@@ -313,7 +313,8 @@ int sftp_packet_write(sftp_session sftp, uint8_t type, ssh_buffer payload){
return size; return size;
} }
sftp_packet sftp_packet_read(sftp_session sftp) { sftp_packet sftp_packet_read(sftp_session sftp)
{
unsigned char buffer[MAX_BUF_SIZE]; unsigned char buffer[MAX_BUF_SIZE];
sftp_packet packet = NULL; sftp_packet packet = NULL;
uint32_t tmp; uint32_t tmp;
@@ -338,10 +339,10 @@ sftp_packet sftp_packet_read(sftp_session sftp) {
ssh_set_error_oom(sftp->session); ssh_set_error_oom(sftp->session);
goto error; goto error;
} }
r=0; r = 0;
do { do {
// read from channel until 4 bytes have been read or an error occurs // 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) { if (s < 0) {
goto error; goto error;
} else if (s == 0) { } else if (s == 0) {
@@ -352,7 +353,7 @@ sftp_packet sftp_packet_read(sftp_session sftp) {
} else { } else {
r += s; r += s;
} }
} while (r<4); } while (r < 4);
ssh_buffer_add_data(packet->payload, buffer, r); ssh_buffer_add_data(packet->payload, buffer, r);
if (ssh_buffer_get_u32(packet->payload, &tmp) != sizeof(uint32_t)) { if (ssh_buffer_get_u32(packet->payload, &tmp) != sizeof(uint32_t)) {
ssh_set_error(sftp->session, SSH_FATAL, "Short sftp packet!"); ssh_set_error(sftp->session, SSH_FATAL, "Short sftp packet!");
@@ -385,8 +386,10 @@ sftp_packet sftp_packet_read(sftp_session sftp) {
goto error; goto error;
} }
while (size > 0 && size < UINT_MAX) { while (size > 0 && size < UINT_MAX) {
r=ssh_channel_read(sftp->channel,buffer, r = ssh_channel_read(sftp->channel,
sizeof(buffer)>size ? size:sizeof(buffer),0); buffer,
sizeof(buffer) > size ? size : sizeof(buffer),
0);
if (r < 0) { if (r < 0) {
/* TODO: check if there are cases where an error needs to be set here */ /* TODO: check if there are cases where an error needs to be set here */