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
pull/13701/head
Shivani Bhardwaj 4 months ago
parent 03bc95c108
commit eb39dba5dd

@ -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 {

Loading…
Cancel
Save