]> git.ipfire.org Git - thirdparty/suricata.git/commitdiff
dnp3: do not log empty objects array
authorPhilippe Antoine <pantoine@oisf.net>
Mon, 4 Jul 2022 08:51:15 +0000 (10:51 +0200)
committerVictor Julien <vjulien@oisf.net>
Wed, 27 Jul 2022 20:25:24 +0000 (22:25 +0200)
Ticket: #5167

src/output-json-dnp3.c

index 016499ddfcf56daa2a0b4c97ff84dfca5701ed75..ddddec6723fbc99fbd73062bb05f60a6943d462d 100644 (file)
@@ -64,9 +64,9 @@ static void JsonDNP3LogLinkControl(JsonBuilder *js, uint8_t lc)
 
 static void JsonDNP3LogIin(JsonBuilder *js, uint16_t iin)
 {
-    jb_open_array(js, "indicators");
-
     if (iin) {
+        jb_open_array(js, "indicators");
+
         int mapping = 0;
         do {
             if (iin & DNP3IndicatorsMap[mapping].value) {
@@ -74,8 +74,8 @@ static void JsonDNP3LogIin(JsonBuilder *js, uint16_t iin)
             }
             mapping++;
         } while (DNP3IndicatorsMap[mapping].name != NULL);
+        jb_close(js);
     }
-    jb_close(js);
 }
 
 static void JsonDNP3LogApplicationControl(JsonBuilder *js, uint8_t ac)
@@ -160,9 +160,11 @@ void JsonDNP3LogRequest(JsonBuilder *js, DNP3Transaction *dnp3tx)
 
     jb_set_uint(js, "function_code", dnp3tx->request_ah.function_code);
 
-    jb_open_array(js, "objects");
-    JsonDNP3LogObjects(js, &dnp3tx->request_objects);
-    jb_close(js);
+    if (!TAILQ_EMPTY(&dnp3tx->request_objects)) {
+        jb_open_array(js, "objects");
+        JsonDNP3LogObjects(js, &dnp3tx->request_objects);
+        jb_close(js);
+    }
 
     jb_set_bool(js, "complete", dnp3tx->request_complete);
 
@@ -194,9 +196,11 @@ void JsonDNP3LogResponse(JsonBuilder *js, DNP3Transaction *dnp3tx)
 
     jb_set_uint(js, "function_code", dnp3tx->response_ah.function_code);
 
-    jb_open_array(js, "objects");
-    JsonDNP3LogObjects(js, &dnp3tx->response_objects);
-    jb_close(js);
+    if (!TAILQ_EMPTY(&dnp3tx->response_objects)) {
+        jb_open_array(js, "objects");
+        JsonDNP3LogObjects(js, &dnp3tx->response_objects);
+        jb_close(js);
+    }
 
     jb_set_bool(js, "complete", dnp3tx->response_complete);