aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAris Adamantiadis <aris@0xbadc0de.be>2011-06-09 23:27:41 +0200
committerAris Adamantiadis <aris@0xbadc0de.be>2011-06-09 23:27:41 +0200
commit7ff69d9c48d9dd727650a6966cbc3b104fda1d5f (patch)
treee826e64ec33ecf7e9ed46c14344671311b5a2c03
parent640e3830f295baae596cc34ec2fc79fc08807d0f (diff)
downloadlibssh-7ff69d9c48d9dd727650a6966cbc3b104fda1d5f.tar.gz
libssh-7ff69d9c48d9dd727650a6966cbc3b104fda1d5f.tar.xz
libssh-7ff69d9c48d9dd727650a6966cbc3b104fda1d5f.zip
packet: Abort session on fatal errors on packets
-rw-r--r--src/packet.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/src/packet.c b/src/packet.c
index 99760dff..a670b693 100644
--- a/src/packet.c
+++ b/src/packet.c
@@ -136,7 +136,8 @@ int ssh_packet_socket_callback(const void *data, size_t receivedlen, void *user)
size_t processed=0; /* number of byte processed from the callback */
enter_function();
-
+ if (session->session_state == SSH_SESSION_STATE_ERROR)
+ goto error;
switch(session->packet_state) {
case PACKET_STATE_INIT:
if(receivedlen < blocksize){
@@ -289,6 +290,7 @@ int ssh_packet_socket_callback(const void *data, size_t receivedlen, void *user)
session->packet_state);
error:
+ session->session_state= SSH_SESSION_STATE_ERROR;
leave_function();
return processed;
}