fix buffer out of range on small packets
This commit is contained in:
@ -1,6 +1,6 @@
|
|||||||
[package]
|
[package]
|
||||||
name = "dockermcmgr"
|
name = "dockermcmgr"
|
||||||
version = "0.0.4"
|
version = "0.0.5"
|
||||||
edition = "2024"
|
edition = "2024"
|
||||||
|
|
||||||
[[bin]]
|
[[bin]]
|
||||||
|
|||||||
@ -38,7 +38,7 @@
|
|||||||
final:
|
final:
|
||||||
{
|
{
|
||||||
pname = "dmm";
|
pname = "dmm";
|
||||||
version = "0.0.4";
|
version = "0.0.5";
|
||||||
|
|
||||||
inherit src;
|
inherit src;
|
||||||
cargoLock.lockFile = src + "/Cargo.lock";
|
cargoLock.lockFile = src + "/Cargo.lock";
|
||||||
|
|||||||
@ -2,6 +2,7 @@ use crate::minecraft::client::client::Client;
|
|||||||
|
|
||||||
use crate::minecraft::varint::varint_read;
|
use crate::minecraft::varint::varint_read;
|
||||||
|
|
||||||
|
use std::cmp::min;
|
||||||
use std::collections::VecDeque;
|
use std::collections::VecDeque;
|
||||||
use std::io;
|
use std::io;
|
||||||
|
|
||||||
@ -77,12 +78,14 @@ impl Client {
|
|||||||
}
|
}
|
||||||
|
|
||||||
let _ = self.buffer.extend(data);
|
let _ = self.buffer.extend(data);
|
||||||
|
|
||||||
|
let varint_buffer_len = min(self.buffer.len(), 5);
|
||||||
|
|
||||||
let mut varint_buffer: VecDeque<u8> = self.buffer[..5].to_vec().into();
|
let mut varint_buffer: VecDeque<u8> = self.buffer[..varint_buffer_len].to_vec().into();
|
||||||
println!("varint_buffer : {:?}", varint_buffer);
|
println!("varint_buffer : {:?}", varint_buffer);
|
||||||
|
|
||||||
let expected_len = varint_read(&mut varint_buffer)?;
|
let expected_len = varint_read(&mut varint_buffer)?;
|
||||||
let varint_len = 5 - varint_buffer.len();
|
let varint_len = varint_buffer_len - varint_buffer.len();
|
||||||
|
|
||||||
println!("expected len : {}, current len : {}", expected_len as usize, self.buffer.len());
|
println!("expected len : {}, current len : {}", expected_len as usize, self.buffer.len());
|
||||||
println!("buffer : {:?}", self.buffer);
|
println!("buffer : {:?}", self.buffer);
|
||||||
|
|||||||
Reference in New Issue
Block a user