]> git.ipfire.org Git - thirdparty/suricata.git/commitdiff
rust/json: Rework scope for short-lived vars 5733/head
authorJeff Lucovsky <jeff@lucovsky.org>
Sat, 16 Jan 2021 14:34:20 +0000 (09:34 -0500)
committerVictor Julien <victor@inliniac.net>
Sat, 16 Jan 2021 17:00:49 +0000 (18:00 +0100)
This commit corrects scope issues identified during CI with
FC32/strict-rust:
"this `CString` is deallocated at the end of the statement, bind it to a variable to extend its lifetime
"

rust/src/json.rs

index 9c5e6fa958d2d68e79ba47c655fb12e24ff9a0f0..d5e2db6aa465bc643c785ec4bb829c1349b38a3e 100644 (file)
@@ -79,40 +79,45 @@ impl Json {
 
     pub fn set(&self, key: &str, val: Json) {
         unsafe {
+            let s = CString::new(key).unwrap();
             json_object_set_new(self.js,
-                                CString::new(key).unwrap().as_ptr(),
+                                s.as_ptr(),
                                 val.js);
         }
     }
 
     pub fn set_string_from_bytes(&self, key: &str, val: &[u8]) {
         unsafe {
+            let s = CString::new(key).unwrap();
             json_object_set_new(self.js,
-                                CString::new(key).unwrap().as_ptr(),
+                                s.as_ptr(),
                                 json_string(to_cstring(val).as_ptr()));
         }
     }
 
     pub fn set_string(&self, key: &str, val: &str) {
         unsafe {
+            let s = CString::new(key).unwrap();
             json_object_set_new(self.js,
-                                CString::new(key).unwrap().as_ptr(),
+                                s.as_ptr(),
                                 json_string(to_cstring(val.as_bytes()).as_ptr()));
         }
     }
 
     pub fn set_integer(&self, key: &str, val: u64) {
         unsafe {
+            let s = CString::new(key).unwrap();
             json_object_set_new(self.js,
-                                CString::new(key).unwrap().as_ptr(),
+                                s.as_ptr(),
                                 json_integer(val));
         }
     }
 
     pub fn set_boolean(&self, key: &str, val: bool) {
         unsafe {
+            let s = CString::new(key).unwrap();
             json_object_set_new(self.js,
-                                CString::new(key).unwrap().as_ptr(),
+                                s.as_ptr(),
                                 SCJsonBool(val));
         }
     }