From 592a65f52e7fa3076d6c5f5c15ef076103b82f95 Mon Sep 17 00:00:00 2001 From: Rob Bradford Date: Tue, 3 May 2022 16:34:02 +0100 Subject: [PATCH] qcow: Reject files with compressed blocks early Fixes: #3727 Signed-off-by: Rob Bradford --- qcow/src/qcow.rs | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/qcow/src/qcow.rs b/qcow/src/qcow.rs index ac84de76e..ecbb49edb 100644 --- a/qcow/src/qcow.rs +++ b/qcow/src/qcow.rs @@ -516,6 +516,19 @@ impl QcowFile { let l2_entries = cluster_size / size_of::() as u64; + // Check for compressed blocks + for l2_addr_disk in l1_table.get_values() { + if *l2_addr_disk != 0 { + if let Err(e) = Self::read_l2_cluster(&mut raw_file, *l2_addr_disk) { + if let Some(os_error) = e.raw_os_error() { + if os_error == ENOTSUP { + return Err(Error::CompressedBlocksNotSupported); + } + } + } + } + } + let mut qcow = QcowFile { raw_file, header,