Fix printing unprintable characters in the engine-analysis fast_pattern mode.

remotes/origin/master-1.1.x
Victor Julien 15 years ago
parent 075719ea8c
commit 1a32d9b5ec

@ -311,27 +311,37 @@ void EngineAnalysisFastPattern(Signature *s)
fprintf(fp_engine_analysis_FD, " Content negated: %s\n", fprintf(fp_engine_analysis_FD, " Content negated: %s\n",
(fp_cd->flags & DETECT_CONTENT_NEGATED) ? "yes" : "no"); (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) { if (pat == NULL) {
SCLogError(SC_ERR_MEM_ALLOC, "Error allocating memory"); SCLogError(SC_ERR_MEM_ALLOC, "Error allocating memory");
exit(EXIT_FAILURE); exit(EXIT_FAILURE);
} }
memcpy(pat, cd->content, cd->content_len); memcpy(pat, cd->content, cd->content_len);
pat[cd->content_len] = '\0'; 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) { 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) { if (pat == NULL) {
SCLogError(SC_ERR_MEM_ALLOC, "Error allocating memory"); SCLogError(SC_ERR_MEM_ALLOC, "Error allocating memory");
exit(EXIT_FAILURE); exit(EXIT_FAILURE);
} }
memcpy(pat, cd->content + fp_cd->fp_chop_offset, fp_cd->fp_chop_len); memcpy(pat, cd->content + fp_cd->fp_chop_offset, fp_cd->fp_chop_len);
pat[fp_cd->fp_chop_len] = '\0'; 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 { } 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; return;
} }

Loading…
Cancel
Save