From ffe78c98fd1edb98330189ed40689f9bc40861fc Mon Sep 17 00:00:00 2001 From: Yu Li Date: Wed, 5 Jul 2023 14:09:46 +0800 Subject: [PATCH] qcow: bugfix: do not write v3 items to qcow header Fixes: 3f02ccaa8 Signed-off-by: Yu Li --- block/src/qcow/mod.rs | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/block/src/qcow/mod.rs b/block/src/qcow/mod.rs index 4449b612d..b719a26af 100644 --- a/block/src/qcow/mod.rs +++ b/block/src/qcow/mod.rs @@ -324,11 +324,14 @@ impl QcowHeader { write_u32_to_file(file, self.refcount_table_clusters)?; write_u32_to_file(file, self.nb_snapshots)?; write_u64_to_file(file, self.snapshots_offset)?; - write_u64_to_file(file, self.incompatible_features)?; - write_u64_to_file(file, self.compatible_features)?; - write_u64_to_file(file, self.autoclear_features)?; - write_u32_to_file(file, self.refcount_order)?; - write_u32_to_file(file, self.header_size)?; + + if self.version == 3 { + write_u64_to_file(file, self.incompatible_features)?; + write_u64_to_file(file, self.compatible_features)?; + write_u64_to_file(file, self.autoclear_features)?; + write_u32_to_file(file, self.refcount_order)?; + write_u32_to_file(file, self.header_size)?; + } // Set the file length by seeking and writing a zero to the last byte. This avoids needing // a `File` instead of anything that implements seek as the `file` argument.