diff options
| author | Rubens Brandao <git@rubens.io> | 2024-05-10 15:15:09 -0300 |
|---|---|---|
| committer | Kyle Martin <krm504@nyu.edu> | 2024-05-15 13:33:50 -0400 |
| commit | 64313de8d9591193ce92173f9377c400c8a0722d (patch) | |
| tree | fce4fad4387a31eca38b28c4ec06ad7218f5a0d4 /rust/src/binaryview.rs | |
| parent | 53bbcbebf77d8d45f4349078116f648fdde5b753 (diff) | |
Fix invalid write to uninitialized Vec
Diffstat (limited to 'rust/src/binaryview.rs')
| -rw-r--r-- | rust/src/binaryview.rs | 15 |
1 files changed, 4 insertions, 11 deletions
diff --git a/rust/src/binaryview.rs b/rust/src/binaryview.rs index 5a4e270b..d3225758 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<u8> { - 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.as_mut_slice(); + let size = self.read(slice, offset); + ret.truncate(size); ret } |
