From: Shivani Bhardwaj Date: Thu, 17 Jul 2025 06:31:07 +0000 (+0530) Subject: engine/analyzer: check if file pointer exists before writing X-Git-Url: http://git.ipfire.org/gitweb/gitweb.cgi?a=commitdiff_plain;h=eb39dba5ddb9f8c9163f774df0643275f994e6c3;p=thirdparty%2Fsuricata.git engine/analyzer: check if file pointer exists before writing de_ctx->ea->fp_engine_analysis_fp is only initialized if engine-analysis.rules-fast-pattern is enabled in the configuration. If this config param is missing, this leads to segfault. Bug 7822 --- diff --git a/src/detect-engine-analyzer.c b/src/detect-engine-analyzer.c index 98eb1b9558..c6c3b27596 100644 --- a/src/detect-engine-analyzer.c +++ b/src/detect-engine-analyzer.c @@ -622,12 +622,14 @@ static void EngineAnalysisRulesPrintFP(const DetectEngineCtx *de_ctx, const Sign void EngineAnalysisRulesFailure( const DetectEngineCtx *de_ctx, const char *line, const char *file, int lineno) { - fprintf(de_ctx->ea->fp_engine_analysis_fp, "== Sid: UNKNOWN ==\n"); - fprintf(de_ctx->ea->fp_engine_analysis_fp, "%s\n", line); - fprintf(de_ctx->ea->fp_engine_analysis_fp, " FAILURE: invalid rule.\n"); - fprintf(de_ctx->ea->fp_engine_analysis_fp, " File: %s.\n", file); - fprintf(de_ctx->ea->fp_engine_analysis_fp, " Line: %d.\n", lineno); - fprintf(de_ctx->ea->fp_engine_analysis_fp, "\n"); + if (de_ctx->ea->fp_engine_analysis_fp) { + fprintf(de_ctx->ea->fp_engine_analysis_fp, "== Sid: UNKNOWN ==\n"); + fprintf(de_ctx->ea->fp_engine_analysis_fp, "%s\n", line); + fprintf(de_ctx->ea->fp_engine_analysis_fp, " FAILURE: invalid rule.\n"); + fprintf(de_ctx->ea->fp_engine_analysis_fp, " File: %s.\n", file); + fprintf(de_ctx->ea->fp_engine_analysis_fp, " Line: %d.\n", lineno); + fprintf(de_ctx->ea->fp_engine_analysis_fp, "\n"); + } } typedef struct RuleAnalyzer {