From 57a5c50a54e7c3f8c08c712810cf98e43f54f4d6 Mon Sep 17 00:00:00 2001 From: Andreas Schneider Date: Wed, 22 Apr 2009 15:21:36 +0000 Subject: 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 --- libssh/sftp.c | 39 ++++++++++++++++++++++----------------- 1 file changed, 22 insertions(+), 17 deletions(-) (limited to 'libssh') 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){ -- cgit