From 1a32d9b5ec00e3c6ef36e9097df5f588218a3e47 Mon Sep 17 00:00:00 2001 From: Victor Julien Date: Fri, 26 Nov 2010 14:25:28 +0100 Subject: [PATCH] Fix printing unprintable characters in the engine-analysis fast_pattern mode. --- src/detect.c | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/src/detect.c b/src/detect.c index 27b95355d2..c258317fb5 100644 --- a/src/detect.c +++ b/src/detect.c @@ -311,27 +311,37 @@ void EngineAnalysisFastPattern(Signature *s) fprintf(fp_engine_analysis_FD, " Content negated: %s\n", (fp_cd->flags & DETECT_CONTENT_NEGATED) ? "yes" : "no"); - uint8_t *pat = malloc(fp_cd->content_len + 1); + uint16_t patlen = fp_cd->content_len; + uint8_t *pat = SCMalloc(fp_cd->content_len + 1); if (pat == NULL) { SCLogError(SC_ERR_MEM_ALLOC, "Error allocating memory"); exit(EXIT_FAILURE); } memcpy(pat, cd->content, cd->content_len); pat[cd->content_len] = '\0'; - fprintf(fp_engine_analysis_FD, " Original content: %s\n", pat); + fprintf(fp_engine_analysis_FD, " Original content: "); + PrintRawUriFp(fp_engine_analysis_FD, pat, patlen); + fprintf(fp_engine_analysis_FD, "\n"); if (fast_pattern_chop_set) { - uint8_t *pat = malloc(fp_cd->fp_chop_len + 1); + SCFree(pat); + patlen = fp_cd->fp_chop_len; + pat = SCMalloc(fp_cd->fp_chop_len + 1); if (pat == NULL) { SCLogError(SC_ERR_MEM_ALLOC, "Error allocating memory"); exit(EXIT_FAILURE); } memcpy(pat, cd->content + fp_cd->fp_chop_offset, fp_cd->fp_chop_len); pat[fp_cd->fp_chop_len] = '\0'; - fprintf(fp_engine_analysis_FD, " Final content: %s\n", pat); + fprintf(fp_engine_analysis_FD, " Final content: "); + PrintRawUriFp(fp_engine_analysis_FD, pat, patlen); + fprintf(fp_engine_analysis_FD, "\n"); } else { - fprintf(fp_engine_analysis_FD, " Final content: %s\n", pat); + fprintf(fp_engine_analysis_FD, " Final content: "); + PrintRawUriFp(fp_engine_analysis_FD, pat, patlen); + fprintf(fp_engine_analysis_FD, "\n"); } + SCFree(pat); return; }