aboutsummaryrefslogtreecommitdiff
path: root/rustables/src/set.rs
diff options
context:
space:
mode:
authorSimon THOBY <git@nightmared.fr>2021-10-20 21:56:10 +0200
committerSimon THOBY <git@nightmared.fr>2021-11-02 22:17:43 +0100
commit2036da41552f5e19d3de08e9bbe4d3bdfea761f0 (patch)
tree3990952c6a567a33c62315a3c502fd56da25a2f6 /rustables/src/set.rs
parente58ccb7d8b8168b801a820005c1cf8e50f892659 (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.rs12
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
+ }
}
}