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
This commit is contained in:
Andreas Schneider
2009-04-22 15:21:36 +00:00
parent e99966772e
commit 57a5c50a54

View File

@@ -370,24 +370,29 @@ static SFTP_MESSAGE *sftp_get_message(SFTP_PACKET *packet) {
return msg; return msg;
} }
static int sftp_read_and_dispatch(SFTP_SESSION *sftp){ static int sftp_read_and_dispatch(SFTP_SESSION *sftp) {
SFTP_PACKET *packet; SFTP_PACKET *packet = NULL;
SFTP_MESSAGE *message=NULL; SFTP_MESSAGE *msg = NULL;
sftp_enter_function();
packet=sftp_packet_read(sftp); sftp_enter_function();
if(!packet){
sftp_leave_function(); packet = sftp_packet_read(sftp);
return -1; /* something nasty happened reading the packet */ if (packet == NULL) {
}
message=sftp_get_message(packet);
sftp_packet_free(packet);
if(!message){
sftp_leave_function();
return -1;
}
sftp_enqueue(sftp,message);
sftp_leave_function(); 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){ void sftp_packet_free(SFTP_PACKET *packet){