diff options
author | Andreas Schneider <mail@cynapses.org> | 2009-04-09 20:35:51 +0000 |
---|---|---|
committer | Andreas Schneider <mail@cynapses.org> | 2009-04-09 20:35:51 +0000 |
commit | 2a118371fac17dab48f05438064125051fb35a62 (patch) | |
tree | 83109133b57dbc6259bc79ba61f648c053a53f46 /libssh/messages.c | |
parent | e954d5421556544b0dc61edbcc90242ff9fea3c1 (diff) | |
download | libssh-2a118371fac17dab48f05438064125051fb35a62.tar.gz libssh-2a118371fac17dab48f05438064125051fb35a62.tar.xz libssh-2a118371fac17dab48f05438064125051fb35a62.zip |
Add error checking to ssh_message_channel_request_reply_success().
git-svn-id: svn+ssh://svn.berlios.de/svnroot/repos/libssh/trunk@449 7dcaeef0-15fb-0310-b436-a5af3365683c
Diffstat (limited to 'libssh/messages.c')
-rw-r--r-- | libssh/messages.c | 39 |
1 files changed, 26 insertions, 13 deletions
diff --git a/libssh/messages.c b/libssh/messages.c index e49f291..ea879f3 100644 --- a/libssh/messages.c +++ b/libssh/messages.c @@ -604,20 +604,33 @@ char *ssh_message_channel_request_subsystem(SSH_MESSAGE *msg){ return msg->channel_request.subsystem; } -int ssh_message_channel_request_reply_success(SSH_MESSAGE *msg){ - u32 channel; - if(msg->channel_request.want_reply){ - channel=msg->channel_request.channel->remote_channel; - ssh_log(msg->session, SSH_LOG_PACKET, - "Sending a channel_request success to channel %d", channel); - buffer_add_u8(msg->session->out_buffer,SSH2_MSG_CHANNEL_SUCCESS); - buffer_add_u32(msg->session->out_buffer,htonl(channel)); - return packet_send(msg->session); - } else { - ssh_log(msg->session, SSH_LOG_PACKET, - "The client doesn't want to know the request successed"); - return 0; +int ssh_message_channel_request_reply_success(SSH_MESSAGE *msg) { + u32 channel; + + if (msg == NULL) { + return SSH_ERROR; + } + + if (msg->channel_request.want_reply) { + channel = msg->channel_request.channel->remote_channel; + + ssh_log(msg->session, SSH_LOG_PACKET, + "Sending a channel_request success to channel %d", channel); + + if (buffer_add_u8(msg->session->out_buffer, SSH2_MSG_CHANNEL_SUCCESS) < 0) { + return SSH_ERROR; } + if (buffer_add_u32(msg->session->out_buffer, htonl(channel)) < 0) { + return SSH_ERROR; + } + + return packet_send(msg->session); + } + + ssh_log(msg->session, SSH_LOG_PACKET, + "The client doesn't want to know the request succeeded"); + + return SSH_OK; } static int ssh_message_channel_request_reply_default(SSH_MESSAGE *msg){ |