summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndreas Schneider <mail@cynapses.org>2009-04-08 12:56:12 +0000
committerAndreas Schneider <mail@cynapses.org>2009-04-08 12:56:12 +0000
commitda1eee8c89e45fcce801c1e8ac6d944789f9f3be (patch)
tree8d735855a409fdf211b30d012668de45363bf955
parent8948bf41f1994429526fedb0c629d355b1f14cfe (diff)
downloadlibssh-da1eee8c89e45fcce801c1e8ac6d944789f9f3be.tar.gz
libssh-da1eee8c89e45fcce801c1e8ac6d944789f9f3be.tar.xz
libssh-da1eee8c89e45fcce801c1e8ac6d944789f9f3be.zip
Fix header functions and add return value checks.
git-svn-id: svn+ssh://svn.berlios.de/svnroot/repos/libssh/trunk@430 7dcaeef0-15fb-0310-b436-a5af3365683c
-rw-r--r--include/libssh/priv.h2
-rw-r--r--libssh/channels1.c4
-rw-r--r--libssh/packet.c9
3 files changed, 11 insertions, 4 deletions
diff --git a/include/libssh/priv.h b/include/libssh/priv.h
index 44638eb..b69a058 100644
--- a/include/libssh/priv.h
+++ b/include/libssh/priv.h
@@ -680,7 +680,7 @@ int channel_request_pty_size1(CHANNEL *channel, char *terminal,int cols,
int channel_change_pty_size1(CHANNEL *channel, int cols, int rows);
int channel_request_shell1(CHANNEL *channel);
int channel_request_exec1(CHANNEL *channel, char *cmd);
-void channel_handle1(SSH_SESSION *session,int type);
+int channel_handle1(SSH_SESSION *session, int type);
int channel_write1(CHANNEL *channel, void *data, int len);
/* session.c */
diff --git a/libssh/channels1.c b/libssh/channels1.c
index 6a7a3f2..f1bcbe8 100644
--- a/libssh/channels1.c
+++ b/libssh/channels1.c
@@ -283,7 +283,9 @@ int channel_handle1(SSH_SESSION *session, int type) {
}
break;
case SSH_SMSG_EXITSTATUS:
- channel_rcv_close1(session);
+ if (channel_rcv_close1(session) < 0) {
+ return -1;
+ }
break;
default:
ssh_log(session, SSH_LOG_FUNCTIONS, "Unexepected message %d", type);
diff --git a/libssh/packet.c b/libssh/packet.c
index 4802fe6..179341f 100644
--- a/libssh/packet.c
+++ b/libssh/packet.c
@@ -460,7 +460,9 @@ void packet_parse(SSH_SESSION *session){
case SSH_SMSG_STDOUT_DATA:
case SSH_SMSG_STDERR_DATA:
case SSH_SMSG_EXITSTATUS:
- channel_handle1(session,type);
+ if (channel_handle1(session,type) < 0) {
+ return;
+ }
return;
case SSH_MSG_DEBUG:
case SSH_MSG_IGNORE:
@@ -525,7 +527,10 @@ static int packet_wait1(SSH_SESSION *session,int type,int blocking){
case SSH_SMSG_STDOUT_DATA:
case SSH_SMSG_STDERR_DATA:
case SSH_SMSG_EXITSTATUS:
- channel_handle1(session,type);
+ if (channel_handle1(session,type) < 0) {
+ leave_function();
+ return -1;
+ }
break;
case SSH_MSG_DEBUG:
case SSH_MSG_IGNORE: