From ccda1a004e35a4eb6a9eee2bc878d7520e020540 Mon Sep 17 00:00:00 2001 From: Rob Bradford Date: Tue, 14 Sep 2021 17:09:12 +0100 Subject: [PATCH] devices: cmos: Increase robustness of CMOS device Check sizes of data reads/writes to avoid panics. Signed-off-by: Rob Bradford --- devices/src/legacy/cmos.rs | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/devices/src/legacy/cmos.rs b/devices/src/legacy/cmos.rs index ad9f53cca..eeaf172c2 100644 --- a/devices/src/legacy/cmos.rs +++ b/devices/src/legacy/cmos.rs @@ -51,13 +51,14 @@ impl Cmos { impl BusDevice for Cmos { fn write(&mut self, _base: u64, offset: u64, data: &[u8]) -> Option> { if data.len() != 1 { + warn!("Invalid write size on CMOS device: {}", data.len()); return None; } match offset { INDEX_OFFSET => self.index = data[0] & INDEX_MASK, DATA_OFFSET => self.data[self.index as usize] = data[0], - o => panic!("bad write offset on CMOS device: {}", o), + o => warn!("bad write offset on CMOS device: {}", o), }; None } @@ -69,6 +70,7 @@ impl BusDevice for Cmos { } if data.len() != 1 { + warn!("Invalid read size on CMOS device: {}", data.len()); return; } @@ -126,7 +128,10 @@ impl BusDevice for Cmos { } } } - o => panic!("bad read offset on CMOS device: {}", o), + o => { + warn!("bad read offset on CMOS device: {}", o); + 0 + } } } }