X-Git-Url: http://andersk.mit.edu/gitweb/openssh.git/blobdiff_plain/d50d9b63004db35fed966c9b780259a86cb8ee8f..eea098a35a7ed7fd460ffb549c241aa9d47c2919:/sftp-client.c diff --git a/sftp-client.c b/sftp-client.c index b0007a73..4f2a1e28 100644 --- a/sftp-client.c +++ b/sftp-client.c @@ -29,16 +29,14 @@ /* XXX: copy between two remote sites */ #include "includes.h" -RCSID("$OpenBSD: sftp-client.c,v 1.14 2001/03/16 08:16:17 djm Exp $"); +RCSID("$OpenBSD: sftp-client.c,v 1.18 2001/07/14 15:10:16 stevesk Exp $"); -#include "ssh.h" #include "buffer.h" #include "bufaux.h" #include "getput.h" #include "xmalloc.h" #include "log.h" #include "atomicio.h" -#include "pathnames.h" #include "sftp.h" #include "sftp-common.h" @@ -51,7 +49,7 @@ RCSID("$OpenBSD: sftp-client.c,v 1.14 2001/03/16 08:16:17 djm Exp $"); /* Message ID */ static u_int msg_id = 1; -void +static void send_msg(int fd, Buffer *m) { int mlen = buffer_len(m); @@ -70,14 +68,16 @@ send_msg(int fd, Buffer *m) buffer_free(&oqueue); } -void +static void get_msg(int fd, Buffer *m) { u_int len, msg_len; unsigned char buf[4096]; len = atomicio(read, fd, buf, 4); - if (len != 4) + if (len == 0) + fatal("Connection closed"); + else if (len == -1) fatal("Couldn't read packet: %s", strerror(errno)); msg_len = GET_32BIT(buf); @@ -86,7 +86,9 @@ get_msg(int fd, Buffer *m) while (msg_len) { len = atomicio(read, fd, buf, MIN(msg_len, sizeof(buf))); - if (len <= 0) + if (len == 0) + fatal("Connection closed"); + else if (len == -1) fatal("Couldn't read packet: %s", strerror(errno)); msg_len -= len; @@ -94,7 +96,7 @@ get_msg(int fd, Buffer *m) } } -void +static void send_string_request(int fd, u_int id, u_int code, char *s, u_int len) { @@ -109,7 +111,7 @@ send_string_request(int fd, u_int id, u_int code, char *s, buffer_free(&msg); } -void +static void send_string_attrs_request(int fd, u_int id, u_int code, char *s, u_int len, Attrib *a) { @@ -125,7 +127,7 @@ send_string_attrs_request(int fd, u_int id, u_int code, char *s, buffer_free(&msg); } -u_int +static u_int get_status(int fd, int expected_id) { Buffer msg; @@ -150,7 +152,7 @@ get_status(int fd, int expected_id) return(status); } -char * +static char * get_handle(int fd, u_int expected_id, u_int *len) { Buffer msg; @@ -179,7 +181,7 @@ get_handle(int fd, u_int expected_id, u_int *len) return(handle); } -Attrib * +static Attrib * get_decode_stat(int fd, u_int expected_id, int quiet) { Buffer msg; @@ -279,8 +281,8 @@ do_close(int fd_in, int fd_out, char *handle, u_int handle_len) } -int -do_lsreaddir(int fd_in, int fd_out, char *path, int printflag, +static int +do_lsreaddir(int fd_in, int fd_out, char *path, int printflag, SFTP_DIRENT ***dir) { Buffer msg; @@ -366,7 +368,7 @@ do_lsreaddir(int fd_in, int fd_out, char *path, int printflag, printf("%s\n", longname); if (dir) { - *dir = xrealloc(*dir, sizeof(**dir) * + *dir = xrealloc(*dir, sizeof(**dir) * (ents + 2)); (*dir)[ents] = xmalloc(sizeof(***dir)); (*dir)[ents]->filename = xstrdup(filename);