summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndreas Schneider <mail@cynapses.org>2009-04-22 15:21:36 +0000
committerAndreas Schneider <mail@cynapses.org>2009-04-22 15:21:36 +0000
commit57a5c50a54e7c3f8c08c712810cf98e43f54f4d6 (patch)
treed36b55d4f92b102f3827d357de9adda5d51ad0e5
parente99966772eb1b6d8330dc2119bd97efda89ff9c9 (diff)
downloadlibssh-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.c39
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){