]> git.ipfire.org Git - thirdparty/suricata.git/commitdiff
detect/mqtt: update buffer initialization logic
authorVictor Julien <vjulien@oisf.net>
Sat, 28 Jan 2023 10:30:22 +0000 (11:30 +0100)
committerVictor Julien <vjulien@oisf.net>
Sat, 28 Jan 2023 11:46:41 +0000 (12:46 +0100)
src/detect-mqtt-subscribe-topic.c
src/detect-mqtt-unsubscribe-topic.c

index 71e359375af5bca8a3853e920b979e9042748f8a..62b2018a3d485f339b4e81fc815a493144b87a9e 100644 (file)
@@ -65,8 +65,8 @@ struct MQTTSubscribeTopicGetDataArgs {
 };
 
 static InspectionBuffer *MQTTSubscribeTopicGetData(DetectEngineThreadCtx *det_ctx,
-        const DetectEngineTransforms *transforms,
-        Flow *f, struct MQTTSubscribeTopicGetDataArgs *cbdata, int list_id, bool first)
+        const DetectEngineTransforms *transforms, Flow *f,
+        struct MQTTSubscribeTopicGetDataArgs *cbdata, int list_id)
 {
     SCEnter();
 
@@ -74,7 +74,7 @@ static InspectionBuffer *MQTTSubscribeTopicGetData(DetectEngineThreadCtx *det_ct
             InspectionBufferMultipleForListGet(det_ctx, list_id, cbdata->local_id);
     if (buffer == NULL)
         return NULL;
-    if (!first && buffer->inspect != NULL)
+    if (buffer->initialized)
         return buffer;
 
     const uint8_t *data;
@@ -101,8 +101,8 @@ static uint8_t DetectEngineInspectMQTTSubscribeTopic(DetectEngineCtx *de_ctx,
 
     while ((subscribe_topic_match_limit == 0) || local_id < subscribe_topic_match_limit) {
         struct MQTTSubscribeTopicGetDataArgs cbdata = { local_id, txv, };
-        InspectionBuffer *buffer = MQTTSubscribeTopicGetData(det_ctx,
-            transforms, f, &cbdata, engine->sm_list, false);
+        InspectionBuffer *buffer =
+                MQTTSubscribeTopicGetData(det_ctx, transforms, f, &cbdata, engine->sm_list);
         if (buffer == NULL || buffer->inspect == NULL)
             break;
 
@@ -151,8 +151,8 @@ static void PrefilterTxMQTTSubscribeTopic(DetectEngineThreadCtx *det_ctx, const
     uint32_t local_id = 0;
     while ((subscribe_topic_match_limit == 0) || local_id < subscribe_topic_match_limit) {
         struct MQTTSubscribeTopicGetDataArgs cbdata = { local_id, txv };
-        InspectionBuffer *buffer = MQTTSubscribeTopicGetData(det_ctx, ctx->transforms,
-                f, &cbdata, list_id, true);
+        InspectionBuffer *buffer =
+                MQTTSubscribeTopicGetData(det_ctx, ctx->transforms, f, &cbdata, list_id);
         if (buffer == NULL)
             break;
 
index b7f884c08e8690eb502fb29cec8b8d70ace8d2ae..70ba5af857ea2989e6bb857175e9af9177981a03 100644 (file)
@@ -65,8 +65,8 @@ struct MQTTUnsubscribeTopicGetDataArgs {
 };
 
 static InspectionBuffer *MQTTUnsubscribeTopicGetData(DetectEngineThreadCtx *det_ctx,
-        const DetectEngineTransforms *transforms,
-        Flow *f, struct MQTTUnsubscribeTopicGetDataArgs *cbdata, int list_id, bool first)
+        const DetectEngineTransforms *transforms, Flow *f,
+        struct MQTTUnsubscribeTopicGetDataArgs *cbdata, int list_id)
 {
     SCEnter();
 
@@ -74,7 +74,7 @@ static InspectionBuffer *MQTTUnsubscribeTopicGetData(DetectEngineThreadCtx *det_
             InspectionBufferMultipleForListGet(det_ctx, list_id, cbdata->local_id);
     if (buffer == NULL)
         return NULL;
-    if (!first && buffer->inspect != NULL)
+    if (buffer->initialized)
         return buffer;
 
     const uint8_t *data;
@@ -101,8 +101,8 @@ static uint8_t DetectEngineInspectMQTTUnsubscribeTopic(DetectEngineCtx *de_ctx,
 
     while ((unsubscribe_topic_match_limit == 0) || local_id < unsubscribe_topic_match_limit) {
         struct MQTTUnsubscribeTopicGetDataArgs cbdata = { local_id, txv, };
-        InspectionBuffer *buffer = MQTTUnsubscribeTopicGetData(det_ctx,
-            transforms, f, &cbdata, engine->sm_list, false);
+        InspectionBuffer *buffer =
+                MQTTUnsubscribeTopicGetData(det_ctx, transforms, f, &cbdata, engine->sm_list);
         if (buffer == NULL || buffer->inspect == NULL)
             break;
 
@@ -151,8 +151,8 @@ static void PrefilterTxMQTTUnsubscribeTopic(DetectEngineThreadCtx *det_ctx, cons
     uint32_t local_id = 0;
     while ((unsubscribe_topic_match_limit == 0) || local_id < unsubscribe_topic_match_limit) {
         struct MQTTUnsubscribeTopicGetDataArgs cbdata = { local_id, txv };
-        InspectionBuffer *buffer = MQTTUnsubscribeTopicGetData(det_ctx, ctx->transforms,
-                f, &cbdata, list_id, true);
+        InspectionBuffer *buffer =
+                MQTTUnsubscribeTopicGetData(det_ctx, ctx->transforms, f, &cbdata, list_id);
         if (buffer == NULL)
             break;