From d24c5d9ea632d05e7c21a3a57532cf89f370753a Mon Sep 17 00:00:00 2001 From: Bruce Leidl Date: Wed, 2 Oct 2019 15:41:52 -0400 Subject: [PATCH] Fixed incorrect copy size reading/writing virtqueue descriptors --- src/virtio/vring.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/virtio/vring.rs b/src/virtio/vring.rs index fb8f016..dcb15d2 100644 --- a/src/virtio/vring.rs +++ b/src/virtio/vring.rs @@ -356,7 +356,7 @@ impl Descriptor { pub fn read_from(&self, memory: &GuestRam, offset: usize, buf: &mut[u8]) -> usize { let sz = cmp::min(buf.len(), self.remaining(offset)); if sz > 0 { - memory.read_bytes(self.addr + offset as u64, buf).unwrap(); + memory.read_bytes(self.addr + offset as u64, &mut buf[..sz]).unwrap(); } sz } @@ -364,7 +364,7 @@ impl Descriptor { pub fn write_to(&self, memory: &GuestRam, offset: usize, buf: &[u8]) -> usize { let sz = cmp::min(buf.len(), self.remaining(offset)); if sz > 0 { - memory.write_bytes(self.addr + offset as u64, buf).unwrap(); + memory.write_bytes(self.addr + offset as u64, &buf[..sz]).unwrap(); } sz }