From d0634d18d9dab6a517282a32a97f18d5f2837eb3 Mon Sep 17 00:00:00 2001 From: Anatol Belski Date: Sat, 23 May 2026 16:10:13 +0200 Subject: [PATCH] virtio-devices: Test PCI CFG data_len as access bound Verify that bar_access_params uses data_len when it is smaller than cap.length. Signed-off-by: Anatol Belski --- virtio-devices/src/transport/pci_device.rs | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/virtio-devices/src/transport/pci_device.rs b/virtio-devices/src/transport/pci_device.rs index 5c9377044..50c83d11a 100644 --- a/virtio-devices/src/transport/pci_device.rs +++ b/virtio-devices/src/transport/pci_device.rs @@ -1501,4 +1501,18 @@ mod unit_tests { assert_eq!(bar_offset, 0x14); assert_eq!(access_len, 1); } + + #[test] + fn bar_access_params_uses_data_len_when_smaller() { + let mut cap = VirtioPciCfgCap::new(); + let slice = cap.as_mut_slice(); + + // cap.length = 4, but caller provides only 2 bytes + slice[6..10].copy_from_slice(&0x00u32.to_le_bytes()); + slice[10..14].copy_from_slice(&4u32.to_le_bytes()); + + let (bar_offset, access_len) = cap.bar_access_params(2); + assert_eq!(bar_offset, 0); + assert_eq!(access_len, 2); + } }