diff --git a/pci/src/msix.rs b/pci/src/msix.rs index 3bd59fea1..373ce0c5b 100644 --- a/pci/src/msix.rs +++ b/pci/src/msix.rs @@ -268,7 +268,14 @@ impl MsixConfig { } pub fn read_table(&self, offset: u64, data: &mut [u8]) { - assert!(data.len() == 4 || data.len() == 8); + if data.len() != 4 && data.len() != 8 { + error!( + "invalid MSI-X table read size: {} (allowed: 4 or 8)", + data.len() + ); + data.fill(0xff); + return; + } let index: usize = (offset / MSIX_TABLE_ENTRIES_MODULO) as usize; let modulo_offset = offset % MSIX_TABLE_ENTRIES_MODULO; @@ -423,7 +430,14 @@ impl MsixConfig { } pub fn read_pba(&mut self, offset: u64, data: &mut [u8]) { - assert!(data.len() == 4 || data.len() == 8); + if data.len() != 4 && data.len() != 8 { + error!( + "invalid MSI-X PBA read size: {} (allowed: 4 or 8)", + data.len() + ); + data.fill(0xff); + return; + } let index: usize = (offset / MSIX_PBA_ENTRIES_MODULO) as usize; let modulo_offset = offset % MSIX_PBA_ENTRIES_MODULO;