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
This commit is contained in:
Andreas Schneider
2009-04-09 20:35:51 +00:00
parent e954d54215
commit 2a118371fa

View File

@@ -606,18 +606,31 @@ char *ssh_message_channel_request_subsystem(SSH_MESSAGE *msg){
int ssh_message_channel_request_reply_success(SSH_MESSAGE *msg) { int ssh_message_channel_request_reply_success(SSH_MESSAGE *msg) {
u32 channel; u32 channel;
if (msg == NULL) {
return SSH_ERROR;
}
if (msg->channel_request.want_reply) { if (msg->channel_request.want_reply) {
channel = msg->channel_request.channel->remote_channel; channel = msg->channel_request.channel->remote_channel;
ssh_log(msg->session, SSH_LOG_PACKET, ssh_log(msg->session, SSH_LOG_PACKET,
"Sending a channel_request success to channel %d", channel); "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)); if (buffer_add_u8(msg->session->out_buffer, SSH2_MSG_CHANNEL_SUCCESS) < 0) {
return packet_send(msg->session); return SSH_ERROR;
} else {
ssh_log(msg->session, SSH_LOG_PACKET,
"The client doesn't want to know the request successed");
return 0;
} }
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){ static int ssh_message_channel_request_reply_default(SSH_MESSAGE *msg){