From cced25ca036d5ac33e0d1f19ccbc7a12ce1f95db Mon Sep 17 00:00:00 2001 From: Iru Cai Date: Thu, 17 May 2018 17:06:24 +0800 Subject: make a cleaner parseData --- src/protocol/internal/fqterm_ssh2_packet.cpp | 19 +++++-------------- 1 file changed, 5 insertions(+), 14 deletions(-) diff --git a/src/protocol/internal/fqterm_ssh2_packet.cpp b/src/protocol/internal/fqterm_ssh2_packet.cpp index 75a2cc4..5493623 100644 --- a/src/protocol/internal/fqterm_ssh2_packet.cpp +++ b/src/protocol/internal/fqterm_ssh2_packet.cpp @@ -122,22 +122,13 @@ void FQTermSSH2PacketReceiver::parseData(buffer *input) { // 4. get every field of the ssh packet. packet_len = buffer_get_u32(input); - - std::vector data(packet_len); - - buffer_get(input, &data[0], packet_len); - if (is_mac_) - buffer_consume(input, mac->dgstSize); - - int padding_len = data[0]; - + uint8_t padding_len = buffer_get_u8(input); real_data_len_ = packet_len - 1 - padding_len; - buffer_clear(&recvbuf); - buffer_append(&recvbuf, &data[0] + 1, real_data_len_); - - FQ_TRACE("ssh2packet", 9) << "Receive " << real_data_len_ << " bytes payload:\n" - << dumpHexString << std::string((char *)&data[0] + 1, real_data_len_); + buffer_append(&recvbuf, buffer_data(input), real_data_len_); + buffer_consume(input, packet_len - 1); + if (is_mac_) + buffer_consume(input, mac->dgstSize); // 5. notify others a ssh packet is parsed successfully. packet_type_ = buffer_get_u8(&recvbuf); -- cgit v1.2.3