From: Jeff Lucovsky Date: Sat, 16 Jan 2021 14:34:20 +0000 (-0500) Subject: rust/json: Rework scope for short-lived vars X-Git-Tag: suricata-5.0.6~28 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=8519a9af338a1ecdcdfd8b43979511960a7489e0;p=thirdparty%2Fsuricata.git rust/json: Rework scope for short-lived vars 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 " --- diff --git a/rust/src/json.rs b/rust/src/json.rs index 9c5e6fa958..d5e2db6aa4 100644 --- a/rust/src/json.rs +++ b/rust/src/json.rs @@ -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)); } }