summaryrefslogtreecommitdiff
path: root/rust/src/binaryview.rs
diff options
context:
space:
mode:
authorRubens Brandao <git@rubens.io>2024-05-10 15:15:09 -0300
committerKyle Martin <krm504@nyu.edu>2024-05-15 13:33:50 -0400
commit64313de8d9591193ce92173f9377c400c8a0722d (patch)
treefce4fad4387a31eca38b28c4ec06ad7218f5a0d4 /rust/src/binaryview.rs
parent53bbcbebf77d8d45f4349078116f648fdde5b753 (diff)
Fix invalid write to uninitialized Vec
Diffstat (limited to 'rust/src/binaryview.rs')
-rw-r--r--rust/src/binaryview.rs15
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
}