mirror of
https://git.libssh.org/projects/libssh.git
synced 2026-02-11 18:50:28 +09:00
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
This commit is contained in:
@@ -1120,8 +1120,16 @@ int channel_write_common(ssh_channel channel, const void *data,
|
|||||||
if (buffer_add_u8(session->out_buffer, is_stderr ?
|
if (buffer_add_u8(session->out_buffer, is_stderr ?
|
||||||
SSH2_MSG_CHANNEL_EXTENDED_DATA : SSH2_MSG_CHANNEL_DATA) < 0 ||
|
SSH2_MSG_CHANNEL_EXTENDED_DATA : SSH2_MSG_CHANNEL_DATA) < 0 ||
|
||||||
buffer_add_u32(session->out_buffer,
|
buffer_add_u32(session->out_buffer,
|
||||||
htonl(channel->remote_channel)) < 0 ||
|
htonl(channel->remote_channel)) < 0) {
|
||||||
buffer_add_u32(session->out_buffer, htonl(effectivelen)) < 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) {
|
buffer_add_data(session->out_buffer, data, effectivelen) < 0) {
|
||||||
goto error;
|
goto error;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user