From 0888fc50a6fb379a378193a5cbaecdaa1ac03d17 Mon Sep 17 00:00:00 2001 From: Joey Sacchini Date: Thu, 3 Dec 2020 01:37:10 -0500 Subject: make sure we set data_len to 0 when writing in compressed mode below threshold --- src/reader.rs | 16 +++++++++++++--- src/writer.rs | 1 + 2 files changed, 14 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/reader.rs b/src/reader.rs index 001a561..4920e69 100644 --- a/src/reader.rs +++ b/src/reader.rs @@ -122,7 +122,10 @@ where { let (primary_packet_len, len_bytes) = rr_unwrap!(self.read_one_varint_sync()); let primary_packet_len = primary_packet_len.0 as usize; - rr_unwrap!(self.read_n(VAR_INT_BUF_SIZE, primary_packet_len - VAR_INT_BUF_SIZE + len_bytes)); + rr_unwrap!(self.read_n( + VAR_INT_BUF_SIZE, + primary_packet_len - VAR_INT_BUF_SIZE + len_bytes + )); self.read_packet_in_buf::<'a, P>(len_bytes, primary_packet_len) } } @@ -139,7 +142,13 @@ where { let (primary_packet_len, len_bytes) = rr_unwrap!(self.read_one_varint_async().await); let primary_packet_len = primary_packet_len.0 as usize; - rr_unwrap!(self.read_n_async(VAR_INT_BUF_SIZE, primary_packet_len - VAR_INT_BUF_SIZE + len_bytes).await); + rr_unwrap!( + self.read_n_async( + VAR_INT_BUF_SIZE, + primary_packet_len - VAR_INT_BUF_SIZE + len_bytes + ) + .await + ); self.read_packet_in_buf::

(len_bytes, primary_packet_len) } } @@ -211,7 +220,8 @@ impl CraftReader { P: RawPacket<'a>, { // find data in buf - let buf = &mut self.raw_buf.as_mut().expect("should exist right now")[offset..offset+size]; + let buf = + &mut self.raw_buf.as_mut().expect("should exist right now")[offset..offset + size]; // decrypt the packet if encryption is enabled if let Some(encryption) = self.encryption.as_mut() { encryption.decrypt(buf); diff --git a/src/writer.rs b/src/writer.rs index a1f97c1..4c2de69 100644 --- a/src/writer.rs +++ b/src/writer.rs @@ -238,6 +238,7 @@ impl CraftWriter { let start_offset = packet_len_start_at + n_shift_packet_len; let end_at = start_offset + packet_len_bytes + 1 + body_size; + buf[start_offset+packet_len_bytes] = 0; // data_len = 0 &mut buf[start_offset..end_at] } } else { -- cgit