From 3df27335cf0e9feddb32dbbd5f61f2635b7af245 Mon Sep 17 00:00:00 2001 From: Rubens Brandao Date: Fri, 10 May 2024 15:15:09 -0300 Subject: [PATCH] Fix invalid write to uninitialized Vec --- rust/src/binaryview.rs | 15 ++++----------- 1 file changed, 4 insertions(+), 11 deletions(-) diff --git a/rust/src/binaryview.rs b/rust/src/binaryview.rs index 33fd98813c..a6e9a74d2e 100644 --- a/rust/src/binaryview.rs +++ b/rust/src/binaryview.rs @@ -225,18 +225,11 @@ pub trait BinaryViewExt: BinaryViewBase { /// Reads up to `len` bytes from address `offset` fn read_vec(&self, offset: u64, len: usize) -> Vec { - let mut ret = Vec::with_capacity(len); + let mut ret = vec![0; len]; - unsafe { - let res; - - { - let dest_slice = ret.get_unchecked_mut(0..len); - res = self.read(dest_slice, offset); - } - - ret.set_len(res); - } + let slice = ret.get_mut(0..len).unwrap(); + let size = self.read(slice, offset); + ret.truncate(size); ret }