summary refs log tree commit diff
path: root/qcow/src/qcow_raw_file.rs
diff options
context:
space:
mode:
authorDaniel Verkamp <dverkamp@chromium.org>2019-08-19 13:06:41 -0700
committerCommit Bot <commit-bot@chromium.org>2019-08-26 23:41:50 +0000
commitf8fc71a760be8a15e06de1cf71ee558c948b599d (patch)
tree779e566c89147b9521a9914b1391d2a68836bddc /qcow/src/qcow_raw_file.rs
parent09430fe59ead446115e8fb675876cf4d9117de71 (diff)
downloadcrosvm-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.rs23
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(())
     }