summary refs log tree commit diff
diff options
context:
space:
mode:
authorDaniel Verkamp <dverkamp@chromium.org>2019-07-08 13:12:05 -0700
committerCommit Bot <commit-bot@chromium.org>2019-07-09 17:07:51 +0000
commitbb5a4f1843361518412d5cd4036e31fb65f36e33 (patch)
tree5e5327b1ce21bda52d97730fd118cdd7d11004d2
parentda52468b34ceacf8a3d74d191f09cf9d8099a0a6 (diff)
downloadcrosvm-bb5a4f1843361518412d5cd4036e31fb65f36e33.tar
crosvm-bb5a4f1843361518412d5cd4036e31fb65f36e33.tar.gz
crosvm-bb5a4f1843361518412d5cd4036e31fb65f36e33.tar.bz2
crosvm-bb5a4f1843361518412d5cd4036e31fb65f36e33.tar.lz
crosvm-bb5a4f1843361518412d5cd4036e31fb65f36e33.tar.xz
crosvm-bb5a4f1843361518412d5cd4036e31fb65f36e33.tar.zst
crosvm-bb5a4f1843361518412d5cd4036e31fb65f36e33.zip
devices: remove use of mem::uninitialized
mem::uninitialized is unsafe, and we already replaced most instances of
it with alternate implementations; however, another one slipped in since
then.  Replace it with Default::default() as a safe alterantive.

BUG=None
TEST=./build_test

Change-Id: Idacdcb0ebe197cc93fba4b15c3dda774bb56e73e
Signed-off-by: Daniel Verkamp <dverkamp@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/crosvm/+/1691233
Reviewed-by: Zach Reizner <zachr@chromium.org>
Tested-by: kokoro <noreply+kokoro@google.com>
-rw-r--r--devices/src/virtio/descriptor_utils.rs6
1 files changed, 2 insertions, 4 deletions
diff --git a/devices/src/virtio/descriptor_utils.rs b/devices/src/virtio/descriptor_utils.rs
index 2f296e3..0656c06 100644
--- a/devices/src/virtio/descriptor_utils.rs
+++ b/devices/src/virtio/descriptor_utils.rs
@@ -4,7 +4,6 @@
 
 use std::cmp;
 use std::io;
-use std::mem;
 use std::os::unix::io::AsRawFd;
 
 use data_model::DataInit;
@@ -171,9 +170,8 @@ impl<'a> Reader<'a> {
     }
 
     /// Reads an object from the descriptor chain buffer.
-    pub fn read_obj<T: DataInit>(&mut self) -> Result<T> {
-        // Safe because DataInit types are safe to initialize from raw data.
-        let mut object: T = unsafe { mem::uninitialized() };
+    pub fn read_obj<T: DataInit + Default>(&mut self) -> Result<T> {
+        let mut object: T = Default::default();
         self.read_exact(object.as_mut_slice()).map(|_| object)
     }