]> git.ipfire.org Git - thirdparty/suricata.git/commitdiff
krb: convert to jsonbuilder
authorShivani Bhardwaj <shivanib134@gmail.com>
Fri, 10 Jul 2020 19:32:10 +0000 (01:02 +0530)
committerVictor Julien <victor@inliniac.net>
Wed, 15 Jul 2020 04:30:34 +0000 (06:30 +0200)
Closes redmine ticket 3754.

rust/src/krb/log.rs
src/output-json-krb5.c

index 3759b141d868085584fc8a912cae92d2007bd0d4..d0e654b3003853354e514a5c0b19b39744d94bbc 100644 (file)
 
 // written by Pierre Chifflier  <chifflier@wzdftpd.net>
 
-use crate::json::*;
+use crate::jsonbuilder::{JsonBuilder, JsonError};
 use crate::krb::krb5::{KRB5State,KRB5Transaction,test_weak_encryption};
 
-#[no_mangle]
-pub extern "C" fn rs_krb5_log_json_response(_state: &mut KRB5State, tx: &mut KRB5Transaction) -> *mut JsonT
+fn krb5_log_response(jsb: &mut JsonBuilder, tx: &mut KRB5Transaction) -> Result<(), JsonError>
 {
-    let js = Json::object();
     match tx.error_code {
         Some(c) => {
-            js.set_string("msg_type", "KRB_ERROR");
-            js.set_string("failed_request", &format!("{:?}", tx.msg_type));
-            js.set_string("error_code", &format!("{:?}", c));
+            jsb.set_string("msg_type", "KRB_ERROR")?;
+            jsb.set_string("failed_request", &format!("{:?}", tx.msg_type))?;
+            jsb.set_string("error_code", &format!("{:?}", c))?;
         },
-        None    => { js.set_string("msg_type", &format!("{:?}", tx.msg_type)); },
+        None    => { jsb.set_string("msg_type", &format!("{:?}", tx.msg_type))?; },
     }
     let cname = match tx.cname {
         Some(ref x) => format!("{}", x),
@@ -48,11 +46,17 @@ pub extern "C" fn rs_krb5_log_json_response(_state: &mut KRB5State, tx: &mut KRB
         Some(ref x) => format!("{:?}", x),
         None        => "<none>".to_owned(),
     };
-    js.set_string("cname", &cname);
-    js.set_string("realm", &realm);
-    js.set_string("sname", &sname);
-    js.set_string("encryption", &encryption);
-    js.set_boolean("weak_encryption", tx.etype.map_or(false,test_weak_encryption));
-    return js.unwrap();
+    jsb.set_string("cname", &cname)?;
+    jsb.set_string("realm", &realm)?;
+    jsb.set_string("sname", &sname)?;
+    jsb.set_string("encryption", &encryption)?;
+    jsb.set_bool("weak_encryption", tx.etype.map_or(false,test_weak_encryption))?;
+
+    return Ok(());
 }
 
+#[no_mangle]
+pub extern "C" fn rs_krb5_log_json_response(jsb: &mut JsonBuilder, _state: &mut KRB5State, tx: &mut KRB5Transaction) -> bool
+{
+    krb5_log_response(jsb, tx).is_ok()
+}
index fe79478c5308c8aa55ea0de3a4e3cb7a0342cf67..3141caed24daf29e4d43b515480b005834f2f6bd 100644 (file)
@@ -64,29 +64,28 @@ static int JsonKRB5Logger(ThreadVars *tv, void *thread_data,
 {
     KRB5Transaction *krb5tx = tx;
     LogKRB5LogThread *thread = thread_data;
-    json_t *js, *krb5js;
 
-    js = CreateJSONHeader(p, LOG_DIR_PACKET, "krb5", NULL);
-    if (unlikely(js == NULL)) {
+    JsonBuilder *jb = CreateEveHeader(p, LOG_DIR_PACKET, "krb5", NULL);
+    if (unlikely(jb == NULL)) {
         return TM_ECODE_FAILED;
     }
 
-    JsonAddCommonOptions(&thread->krb5log_ctx->cfg, p, f, js);
+    EveAddCommonOptions(&thread->krb5log_ctx->cfg, p, f, jb);
 
-    krb5js = rs_krb5_log_json_response(state, krb5tx);
-    if (unlikely(krb5js == NULL)) {
+    jb_open_object(jb, "krb5");
+    if (!rs_krb5_log_json_response(jb, state, krb5tx)) {
         goto error;
     }
-    json_object_set_new(js, "krb5", krb5js);
+    jb_close(jb);
 
     MemBufferReset(thread->buffer);
-    OutputJSONBuffer(js, thread->krb5log_ctx->file_ctx, &thread->buffer);
+    OutputJsonBuilderBuffer(jb, thread->krb5log_ctx->file_ctx, &thread->buffer);
 
-    json_decref(js);
+    jb_free(jb);
     return TM_ECODE_OK;
 
 error:
-    json_decref(js);
+    jb_free(jb);
     return TM_ECODE_FAILED;
 }