diff options
author | Simon THOBY <git@nightmared.fr> | 2021-10-20 21:56:10 +0200 |
---|---|---|
committer | Simon THOBY <git@nightmared.fr> | 2021-11-02 22:17:43 +0100 |
commit | 2036da41552f5e19d3de08e9bbe4d3bdfea761f0 (patch) | |
tree | 3990952c6a567a33c62315a3c502fd56da25a2f6 /rustables/src/set.rs | |
parent | e58ccb7d8b8168b801a820005c1cf8e50f892659 (diff) |
fix a few cases where we didn't sanitize properly pointers from libnftnl
Diffstat (limited to 'rustables/src/set.rs')
-rw-r--r-- | rustables/src/set.rs | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/rustables/src/set.rs b/rustables/src/set.rs index 820e368..c099088 100644 --- a/rustables/src/set.rs +++ b/rustables/src/set.rs @@ -42,7 +42,9 @@ impl<'a, K> Set<'a, K> { let set = try_alloc!(sys::nftnl_set_alloc()); sys::nftnl_set_set_u32(set, sys::NFTNL_SET_FAMILY as u16, family as u32); - sys::nftnl_set_set_str(set, sys::NFTNL_SET_TABLE as u16, table.get_name().as_ptr()); + if let Some(table_name) = table.get_name() { + sys::nftnl_set_set_str(set, sys::NFTNL_SET_TABLE as u16, table_name.as_ptr()); + } sys::nftnl_set_set_str(set, sys::NFTNL_SET_NAME as u16, name.as_ptr()); sys::nftnl_set_set_u32(set, sys::NFTNL_SET_ID as u16, id); @@ -130,10 +132,14 @@ impl<'a, K> Set<'a, K> { } } - pub fn get_name(&self) -> &CStr { + pub fn get_name(&self) -> Option<&CStr> { unsafe { let ptr = sys::nftnl_set_get_str(self.set, sys::NFTNL_SET_NAME as u16); - CStr::from_ptr(ptr) + if !ptr.is_null() { + Some(CStr::from_ptr(ptr)) + } else { + None + } } } |