From 867944b939383baf28f573ee7ee3ba03805b25eb Mon Sep 17 00:00:00 2001 From: milo Date: Wed, 2 Feb 2011 05:02:04 +0100 Subject: Respect RFC when sending stderr data http://tools.ietf.org/html/rfc4254#section-5.2 byte SSH_MSG_CHANNEL_EXTENDED_DATA uint32 recipient channel *uint32 data_type_code* string data --- src/channels.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/channels.c b/src/channels.c index 5ee7b84..a886f94 100644 --- a/src/channels.c +++ b/src/channels.c @@ -1120,8 +1120,16 @@ int channel_write_common(ssh_channel channel, const void *data, if (buffer_add_u8(session->out_buffer, is_stderr ? SSH2_MSG_CHANNEL_EXTENDED_DATA : SSH2_MSG_CHANNEL_DATA) < 0 || buffer_add_u32(session->out_buffer, - htonl(channel->remote_channel)) < 0 || - buffer_add_u32(session->out_buffer, htonl(effectivelen)) < 0 || + htonl(channel->remote_channel)) < 0) { + goto error; + } + /* stderr message has an extra field */ + if (is_stderr && + buffer_add_u32(session->out_buffer, htonl(SSH2_EXTENDED_DATA_STDERR)) < 0) { + goto error; + } + /* append payload data */ + if (buffer_add_u32(session->out_buffer, htonl(effectivelen)) < 0 || buffer_add_data(session->out_buffer, data, effectivelen) < 0) { goto error; } -- cgit