From df09e80b89beacf5562edb9b8dc2c8492557c339 Mon Sep 17 00:00:00 2001 From: Rob Bradford Date: Sat, 25 Apr 2026 22:17:23 +0100 Subject: [PATCH] vmm: device_manager: Reject mis-sized PCI hotplug register accesses Reject without asserting that the ACPI PCI hotplug register request matches what is defined in the ACPI definition. Signed-off-by: Rob Bradford Assisted-by: Claude:Opus-4.7 --- vmm/src/device_manager.rs | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/vmm/src/device_manager.rs b/vmm/src/device_manager.rs index 189e877c3..470f17940 100644 --- a/vmm/src/device_manager.rs +++ b/vmm/src/device_manager.rs @@ -6006,7 +6006,10 @@ impl BusDevice for DeviceManager { fn read(&mut self, base: u64, offset: u64, data: &mut [u8]) { match offset { PCIU_FIELD_OFFSET => { - assert!(data.len() == PCIU_FIELD_SIZE); + if data.len() != PCIU_FIELD_SIZE { + warn!("Invalid sized read of PCIU register: {}", data.len()); + return; + } data.copy_from_slice( &self.pci_segments[self.selected_segment] .pci_devices_up @@ -6016,7 +6019,10 @@ impl BusDevice for DeviceManager { self.pci_segments[self.selected_segment].pci_devices_up = 0; } PCID_FIELD_OFFSET => { - assert!(data.len() == PCID_FIELD_SIZE); + if data.len() != PCID_FIELD_SIZE { + warn!("Invalid sized read of PCID register: {}", data.len()); + return; + } data.copy_from_slice( &self.pci_segments[self.selected_segment] .pci_devices_down