diff options
author | Andreas Schneider <mail@cynapses.org> | 2009-04-22 15:21:36 +0000 |
---|---|---|
committer | Andreas Schneider <mail@cynapses.org> | 2009-04-22 15:21:36 +0000 |
commit | 57a5c50a54e7c3f8c08c712810cf98e43f54f4d6 (patch) | |
tree | d36b55d4f92b102f3827d357de9adda5d51ad0e5 | |
parent | e99966772eb1b6d8330dc2119bd97efda89ff9c9 (diff) | |
download | libssh-57a5c50a54e7c3f8c08c712810cf98e43f54f4d6.tar.gz libssh-57a5c50a54e7c3f8c08c712810cf98e43f54f4d6.tar.xz libssh-57a5c50a54e7c3f8c08c712810cf98e43f54f4d6.zip |
Add more error checks to sftp_read_and_dispatch().
git-svn-id: svn+ssh://svn.berlios.de/svnroot/repos/libssh/trunk@577 7dcaeef0-15fb-0310-b436-a5af3365683c
-rw-r--r-- | libssh/sftp.c | 39 |
1 files changed, 22 insertions, 17 deletions
diff --git a/libssh/sftp.c b/libssh/sftp.c index 4854506..1ee7636 100644 --- a/libssh/sftp.c +++ b/libssh/sftp.c @@ -370,24 +370,29 @@ static SFTP_MESSAGE *sftp_get_message(SFTP_PACKET *packet) { return msg; } -static int sftp_read_and_dispatch(SFTP_SESSION *sftp){ - SFTP_PACKET *packet; - SFTP_MESSAGE *message=NULL; - sftp_enter_function(); - packet=sftp_packet_read(sftp); - if(!packet){ - sftp_leave_function(); - return -1; /* something nasty happened reading the packet */ - } - message=sftp_get_message(packet); - sftp_packet_free(packet); - if(!message){ - sftp_leave_function(); - return -1; - } - sftp_enqueue(sftp,message); +static int sftp_read_and_dispatch(SFTP_SESSION *sftp) { + SFTP_PACKET *packet = NULL; + SFTP_MESSAGE *msg = NULL; + + sftp_enter_function(); + + packet = sftp_packet_read(sftp); + if (packet == NULL) { sftp_leave_function(); - return 0; + return -1; /* something nasty happened reading the packet */ + } + + msg = sftp_get_message(packet); + sftp_packet_free(packet); + if (message == NULL) { + sftp_leave_function(); + return -1; + } + + sftp_enqueue(sftp, msg); + + sftp_leave_function(); + return 0; } void sftp_packet_free(SFTP_PACKET *packet){ |