From 330126271be94ed8c3cd553fec86a5f9e2cbf188 Mon Sep 17 00:00:00 2001 From: Huang-Huang Bao Date: Fri, 5 Apr 2024 19:51:18 +0800 Subject: [PATCH] fix: guard against division by zero in libbpf-rs --- src/instance.rs | 28 ++++++++++++++++------------ 1 file changed, 16 insertions(+), 12 deletions(-) diff --git a/src/instance.rs b/src/instance.rs index 466050e..8d02d6f 100644 --- a/src/instance.rs +++ b/src/instance.rs @@ -919,12 +919,14 @@ fn remove_binding_and_ct_entires(skel: &EinatSkel, external_addr: IpAddr) -> Res } } - map_binding.delete_batch( - &to_delete_binding_keys, - (to_delete_binding_keys.len() / core::mem::size_of::()) as _, - MapFlags::ANY, - MapFlags::ANY, - )?; + if !to_delete_binding_keys.is_empty() { + map_binding.delete_batch( + &to_delete_binding_keys, + (to_delete_binding_keys.len() / core::mem::size_of::()) as _, + MapFlags::ANY, + MapFlags::ANY, + )?; + } let mut to_delete_ct_keys = Vec::new(); for ct_key_raw in map_ct.keys() { @@ -934,12 +936,14 @@ fn remove_binding_and_ct_entires(skel: &EinatSkel, external_addr: IpAddr) -> Res } } - map_ct.delete_batch( - &to_delete_ct_keys, - (to_delete_ct_keys.len() / core::mem::size_of::()) as _, - MapFlags::ANY, - MapFlags::ANY, - )?; + if !to_delete_ct_keys.is_empty() { + map_ct.delete_batch( + &to_delete_ct_keys, + (to_delete_ct_keys.len() / core::mem::size_of::()) as _, + MapFlags::ANY, + MapFlags::ANY, + )?; + } Ok(()) }