From bf97051f118b8a7fd66b423333c1282dea58cc36 Mon Sep 17 00:00:00 2001 From: Liu Bo Date: Mon, 4 Dec 2023 22:24:45 -0800 Subject: [PATCH] runtime-rs: fix panic when hypervisor mismatches with configuration If a wrong configuration.toml file is used by accidentally, runtime-rs binary could run into panic because of unwrap(). This fixes the panic by returning errors instead of unwrap(). fixes: #8565 Signed-off-by: Liu Bo --- src/libs/kata-types/src/annotations/mod.rs | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/src/libs/kata-types/src/annotations/mod.rs b/src/libs/kata-types/src/annotations/mod.rs index a353d3e51b..f888c5cb19 100644 --- a/src/libs/kata-types/src/annotations/mod.rs +++ b/src/libs/kata-types/src/annotations/mod.rs @@ -479,8 +479,18 @@ impl Annotation { let u32_err = io::Error::new(io::ErrorKind::InvalidData, "parse u32 error".to_string()); let u64_err = io::Error::new(io::ErrorKind::InvalidData, "parse u64 error".to_string()); let i32_err = io::Error::new(io::ErrorKind::InvalidData, "parse i32 error".to_string()); - let hv = config.hypervisor.get_mut(hypervisor_name).unwrap(); - let ag = config.agent.get_mut(agent_name).unwrap(); + let hv = config.hypervisor.get_mut(hypervisor_name).ok_or_else(|| { + io::Error::new( + io::ErrorKind::InvalidData, + format!("Invalid hypervisor name {}", hypervisor_name), + ) + })?; + let ag = config.agent.get_mut(agent_name).ok_or_else(|| { + io::Error::new( + io::ErrorKind::InvalidData, + format!("Invalid agent name {}", agent_name), + ) + })?; for (key, value) in &self.annotations { if hv.security_info.is_annotation_enabled(key) { match key.as_str() {