vmbase,libfdt: Make cstr! safe & const-compatible
Test: m libvmbase
Test: m libpvmfw.bootargs.test
Test: m liblibfdt.integration_test
Change-Id: Ie6376fabf757b85a75c44ae4f0c04479c1a2c6d9
diff --git a/vmbase/src/util.rs b/vmbase/src/util.rs
index 7fe6015..25586bc 100644
--- a/vmbase/src/util.rs
+++ b/vmbase/src/util.rs
@@ -20,7 +20,12 @@
#[macro_export]
macro_rules! cstr {
($str:literal) => {{
- core::ffi::CStr::from_bytes_with_nul(concat!($str, "\0").as_bytes()).unwrap()
+ const S: &str = concat!($str, "\0");
+ const C: &::core::ffi::CStr = match ::core::ffi::CStr::from_bytes_with_nul(S.as_bytes()) {
+ Ok(v) => v,
+ Err(_) => panic!("string contains interior NUL"),
+ };
+ C
}};
}