From 9c85aab85dad1c71d905c67cf585a56b4b6335db Mon Sep 17 00:00:00 2001 From: Anatol Belski Date: Fri, 29 May 2026 20:11:58 +0200 Subject: [PATCH] block: qcow: Test backing file fitting exactly at cluster end Cover the boundary positive case where backing_file_offset plus backing_file_size equals the cluster size, which the spec allows and the new bound check must accept. Assisted-by: Claude:Opus-4.7 Signed-off-by: Anatol Belski --- block/src/formats/qcow/internal/mod.rs | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/block/src/formats/qcow/internal/mod.rs b/block/src/formats/qcow/internal/mod.rs index 4afa17747..eef61f95f 100644 --- a/block/src/formats/qcow/internal/mod.rs +++ b/block/src/formats/qcow/internal/mod.rs @@ -2747,6 +2747,15 @@ mod unit_tests { )); } + #[test] + fn backing_file_fits_at_cluster_end() { + let cluster_size = 1u64 << DEFAULT_CLUSTER_BITS; + let header = + read_header_with_patched_backing(cluster_size - 16, 16).expect("Header should parse."); + assert_eq!(header.backing_file_offset, cluster_size - 16); + assert_eq!(header.backing_file_size, 16); + } + /// 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)