diff options
author | Daniel Verkamp <dverkamp@chromium.org> | 2019-08-19 13:06:41 -0700 |
---|---|---|
committer | Commit Bot <commit-bot@chromium.org> | 2019-08-26 23:41:50 +0000 |
commit | f8fc71a760be8a15e06de1cf71ee558c948b599d (patch) | |
tree | 779e566c89147b9521a9914b1391d2a68836bddc /qcow/src/qcow_raw_file.rs | |
parent | 09430fe59ead446115e8fb675876cf4d9117de71 (diff) | |
download | crosvm-f8fc71a760be8a15e06de1cf71ee558c948b599d.tar crosvm-f8fc71a760be8a15e06de1cf71ee558c948b599d.tar.gz crosvm-f8fc71a760be8a15e06de1cf71ee558c948b599d.tar.bz2 crosvm-f8fc71a760be8a15e06de1cf71ee558c948b599d.tar.lz crosvm-f8fc71a760be8a15e06de1cf71ee558c948b599d.tar.xz crosvm-f8fc71a760be8a15e06de1cf71ee558c948b599d.tar.zst crosvm-f8fc71a760be8a15e06de1cf71ee558c948b599d.zip |
qcow: replace byteorder with {to,from}_be_bytes()
Use the standard byte order conversion functions rather than the byteorder crate. BUG=None TEST=./build_test TEST=cargo build -p qcow_utils TEST=cargo test -p qcow Change-Id: I9ff7368cc54c539db1996f81d4220cabf7e6e301 Signed-off-by: Daniel Verkamp <dverkamp@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/crosvm/+/1761151 Reviewed-by: Zach Reizner <zachr@chromium.org> Tested-by: kokoro <noreply+kokoro@google.com>
Diffstat (limited to 'qcow/src/qcow_raw_file.rs')
-rw-r--r-- | qcow/src/qcow_raw_file.rs | 23 |
1 files changed, 13 insertions, 10 deletions
diff --git a/qcow/src/qcow_raw_file.rs b/qcow/src/qcow_raw_file.rs index a900081..99a8d71 100644 --- a/qcow/src/qcow_raw_file.rs +++ b/qcow/src/qcow_raw_file.rs @@ -3,10 +3,9 @@ // found in the LICENSE file. use std::fs::File; -use std::io::{self, BufWriter, Seek, SeekFrom}; +use std::io::{self, BufWriter, Read, Seek, SeekFrom, Write}; use std::mem::size_of; -use byteorder::{BigEndian, ReadBytesExt, WriteBytesExt}; use sys_util::WriteZeroes; /// A qcow file. Allows reading/writing clusters and appending clusters. @@ -41,11 +40,11 @@ impl QcowRawFile { ) -> io::Result<Vec<u64>> { let mut table = vec![0; count as usize]; self.file.seek(SeekFrom::Start(offset))?; - self.file.read_u64_into::<BigEndian>(&mut table)?; - if let Some(m) = mask { - for ptr in &mut table { - *ptr &= m; - } + let mask = mask.unwrap_or(u64::max_value()); + for ptr in &mut table { + let mut value = [0u8; 8]; + self.file.read_exact(&mut value)?; + *ptr = u64::from_be_bytes(value) & mask; } Ok(table) } @@ -74,7 +73,7 @@ impl QcowRawFile { } else { *addr | non_zero_flags }; - buffer.write_u64::<BigEndian>(val)?; + buffer.write_all(&val.to_be_bytes())?; } Ok(()) } @@ -85,7 +84,11 @@ impl QcowRawFile { let count = self.cluster_size / size_of::<u16>() as u64; let mut table = vec![0; count as usize]; self.file.seek(SeekFrom::Start(offset))?; - self.file.read_u16_into::<BigEndian>(&mut table)?; + for refcount in &mut table { + let mut value = [0u8; 2]; + self.file.read_exact(&mut value)?; + *refcount = u16::from_be_bytes(value); + } Ok(table) } @@ -94,7 +97,7 @@ impl QcowRawFile { self.file.seek(SeekFrom::Start(offset))?; let mut buffer = BufWriter::with_capacity(table.len() * size_of::<u16>(), &self.file); for count in table { - buffer.write_u16::<BigEndian>(*count)?; + buffer.write_all(&count.to_be_bytes())?; } Ok(()) } |