aya: fix handle null bytes in paths when creating CString

Signed-off-by: Xiaobo Liu <cppcoffee@gmail.com>
reviewable/pr1312/r2
Xiaobo Liu 1 month ago
parent fff92f8529
commit 16141c2e64

@ -118,8 +118,8 @@ impl MapInfo {
pub fn from_pin<P: AsRef<Path>>(path: P) -> Result<Self, MapError> {
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,

@ -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 {

Loading…
Cancel
Save