diff --git a/adb_client/src/server_device/commands/recv.rs b/adb_client/src/server_device/commands/recv.rs index 639e40a..1f31adf 100644 --- a/adb_client/src/server_device/commands/recv.rs +++ b/adb_client/src/server_device/commands/recv.rs @@ -32,7 +32,9 @@ impl Read for ADBRecvCommandReader { match &header[..] { b"DATA" => { let length = self.inner.read_u32::()? as usize; - let effective_read = self.inner.read(&mut buf[0..length])?; + // ensuring read data is at most the buffer length + let min_data_to_read = std::cmp::min(length, buf.len()); + let effective_read = self.inner.read(&mut buf[0..min_data_to_read])?; self.remaining_data_bytes_to_read = length - effective_read; Ok(effective_read)