From a4e8d79650a0d320066155b25ee4826ad0ec6bfe Mon Sep 17 00:00:00 2001 From: Anatol Belski Date: Fri, 29 May 2026 19:31:16 +0200 Subject: [PATCH] block: qcow: Test rejection when backing file offset exceeds cluster Cover an offset that lies well past the end of the first cluster to make sure the bound check fires for arbitrary out of range offsets rather than only the boundary case. Assisted-by: Claude:Opus-4.7 Signed-off-by: Anatol Belski --- block/src/formats/qcow/internal/mod.rs | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/block/src/formats/qcow/internal/mod.rs b/block/src/formats/qcow/internal/mod.rs index 56f7660e4..e383e3d81 100644 --- a/block/src/formats/qcow/internal/mod.rs +++ b/block/src/formats/qcow/internal/mod.rs @@ -2727,6 +2727,16 @@ mod unit_tests { )); } + #[test] + fn backing_file_offset_past_cluster() { + let cluster_size = 1u64 << DEFAULT_CLUSTER_BITS; + let err = read_header_with_patched_backing(cluster_size + 4096, 16).unwrap_err(); + assert!(matches!( + err, + Error::BackingFileOutsideFirstCluster(_, _, _) + )); + } + /// Helper to create a test file with header extensions fn create_header_with_extension(ext_type: u32, ext_data: &[u8]) -> (RawFile, QcowHeader) { let header = QcowHeader::create_for_size_and_path(3, 0x10_0000, None)