diff --git a/aya/src/maps/info.rs b/aya/src/maps/info.rs index 5c2dac9b..6682e4e1 100644 --- a/aya/src/maps/info.rs +++ b/aya/src/maps/info.rs @@ -118,8 +118,8 @@ impl MapInfo { pub fn from_pin>(path: P) -> Result { use std::os::unix::ffi::OsStrExt as _; - // TODO: avoid this unwrap by adding a new error variant. - let path_string = CString::new(path.as_ref().as_os_str().as_bytes()).unwrap(); + let path_string = + CString::new(path.as_ref().as_os_str().as_bytes()).map_err(MapError::from)?; let fd = bpf_get_object(&path_string).map_err(|io_error| SyscallError { call: "BPF_OBJ_GET", io_error, diff --git a/aya/src/maps/mod.rs b/aya/src/maps/mod.rs index 0d3e0ebf..97e6dfd9 100644 --- a/aya/src/maps/mod.rs +++ b/aya/src/maps/mod.rs @@ -174,6 +174,10 @@ pub enum MapError { #[error(transparent)] SyscallError(#[from] SyscallError), + /// An error indicating that an interior nul byte was found. + #[error(transparent)] + NulError(#[from] std::ffi::NulError), + /// Could not pin map #[error("map `{name:?}` requested pinning. pinning failed")] PinError {