From b78c7e18c4ac96b42412ddf2c2a3a55e75467bca Mon Sep 17 00:00:00 2001 From: Victor Julien Date: Tue, 28 Jan 2025 08:38:16 +0100 Subject: [PATCH] SQUASH --- src/detect-engine-prefilter.c | 32 ++++++++++++++++++++++---------- 1 file changed, 22 insertions(+), 10 deletions(-) diff --git a/src/detect-engine-prefilter.c b/src/detect-engine-prefilter.c index 0455ebecc673..0dff2bde52a7 100644 --- a/src/detect-engine-prefilter.c +++ b/src/detect-engine-prefilter.c @@ -754,9 +754,15 @@ int PrefilterSetupRuleGroup(DetectEngineCtx *de_ctx, SigGroupHead *sgh) goto error; data->size = t->sigs_cnt; memcpy((uint8_t *)&data->array, t->sigs, t->sigs_cnt * sizeof(data->array[0])); - PrefilterAppendTxEngine(de_ctx, sgh, PrefilterTxNonPF, t->alproto, t->progress, - (void *)data, free, "hmmm what name to pick?"); // TODO proper free func + // TODO proper free func + if (PrefilterAppendTxEngine(de_ctx, sgh, PrefilterTxNonPF, t->alproto, t->progress, + (void *)data, free, "hmmm what name to pick?") < 0) { + SCFree(data); + goto error; + } } + HashListTableFree(tx_engines_hash); + tx_engines_hash = NULL; if (pkt_non_pf_array_size) { // SCLogNotice("sgh:%p: %u pkt non-pf sigs, with alproto:%u, dsize:%u, dport:%u", @@ -769,9 +775,13 @@ int PrefilterSetupRuleGroup(DetectEngineCtx *de_ctx, SigGroupHead *sgh) memcpy((uint8_t *)&data->array, pkt_non_pf_array, pkt_non_pf_array_size * sizeof(data->array[0])); // TODO can we set a mask here? - PrefilterAppendEngine(de_ctx, sgh, PrefilterPktNonPF, 0, (void *)data, free, - "pkt::non_pf"); // TODO name - // TODO free func + // TODO name + // TODO free func + if (PrefilterAppendEngine( + de_ctx, sgh, PrefilterPktNonPF, 0, (void *)data, free, "pkt::non_pf") < 0) { + SCFree(data); + goto error; + } } if (frame_non_pf_array_size) { SCLogDebug("%u frame non-pf sigs", frame_non_pf_array_size); @@ -782,13 +792,15 @@ int PrefilterSetupRuleGroup(DetectEngineCtx *de_ctx, SigGroupHead *sgh) data->size = frame_non_pf_array_size; memcpy((uint8_t *)&data->array, frame_non_pf_array, frame_non_pf_array_size * sizeof(data->array[0])); - PrefilterAppendFrameEngine(de_ctx, sgh, PrefilterFrameNonPF, ALPROTO_UNKNOWN, - FRAME_ANY_TYPE, (void *)data, free, "pkt::non_pf"); // TODO name - // TODO free func + // TODO free func + // TODO engine name + if (PrefilterAppendFrameEngine(de_ctx, sgh, PrefilterFrameNonPF, ALPROTO_UNKNOWN, + FRAME_ANY_TYPE, (void *)data, free, "pkt::non_pf") < 0) { + SCFree(data); + goto error; + } } - HashListTableFree(tx_engines_hash); - tx_engines_hash = NULL; SCFree(pkt_non_pf_array); pkt_non_pf_array = NULL; SCFree(frame_non_pf_array);