diff options
author | Iru Cai <mytbk920423@gmail.com> | 2018-05-17 17:06:24 +0800 |
---|---|---|
committer | Iru Cai <mytbk920423@gmail.com> | 2018-05-21 09:33:52 +0800 |
commit | cced25ca036d5ac33e0d1f19ccbc7a12ce1f95db (patch) | |
tree | f3b3bddd34ba87629796b8ad46c9a78c26e612d7 /src | |
parent | 7e12cd48525b92a7b7090738c03d10d5e616a92e (diff) | |
download | fqterm-cced25ca036d5ac33e0d1f19ccbc7a12ce1f95db.tar.xz |
make a cleaner parseData
Diffstat (limited to 'src')
-rw-r--r-- | src/protocol/internal/fqterm_ssh2_packet.cpp | 19 |
1 files 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<u_char> 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); |