]> git.ipfire.org Git - thirdparty/suricata.git/commitdiff
jsonbuilder: add set_int for signed ints
authorVictor Julien <vjulien@oisf.net>
Fri, 8 Dec 2023 09:30:25 +0000 (10:30 +0100)
committerVictor Julien <vjulien@oisf.net>
Thu, 14 Dec 2023 08:20:19 +0000 (09:20 +0100)
Bug: #6615

rust/src/jsonbuilder.rs

index 82be09953c707ba697402883e827696e89f59d2e..9ff623429509c7d6bda0ffdfc7b16c460926a489 100644 (file)
@@ -597,6 +597,27 @@ impl JsonBuilder {
         Ok(self)
     }
 
+    /// Set a key and a signed integer type on an object.
+    pub fn set_int(&mut self, key: &str, val: i64) -> Result<&mut Self, JsonError> {
+        match self.current_state() {
+            State::ObjectNth => {
+                self.push(',')?;
+            }
+            State::ObjectFirst => {
+                self.set_state(State::ObjectNth);
+            }
+            _ => {
+                debug_validate_fail!("invalid state");
+                return Err(JsonError::InvalidState);
+            }
+        }
+        self.push('"')?;
+        self.push_str(key)?;
+        self.push_str("\":")?;
+        self.push_str(&val.to_string())?;
+        Ok(self)
+    }
+
     pub fn set_float(&mut self, key: &str, val: f64) -> Result<&mut Self, JsonError> {
         match self.current_state() {
             State::ObjectNth => {
@@ -940,6 +961,14 @@ pub unsafe extern "C" fn jb_set_uint(js: &mut JsonBuilder, key: *const c_char, v
     return false;
 }
 
+#[no_mangle]
+pub unsafe extern "C" fn jb_set_int(js: &mut JsonBuilder, key: *const c_char, val: i64) -> bool {
+    if let Ok(key) = CStr::from_ptr(key).to_str() {
+        return js.set_int(key, val).is_ok();
+    }
+    return false;
+}
+
 #[no_mangle]
 pub unsafe extern "C" fn jb_set_float(js: &mut JsonBuilder, key: *const c_char, val: f64) -> bool {
     if let Ok(key) = CStr::from_ptr(key).to_str() {