From 12e5aa1db13d23d6bc549f5bdf405db095df886d Mon Sep 17 00:00:00 2001 From: Giuseppe Longo Date: Sat, 9 Mar 2019 22:36:03 +0100 Subject: [PATCH] detect-iprep: fix memory leaks Loading rules with iprep keyword cause memory leaks due to missing frees. Direct leak of 8 byte(s) in 4 object(s) allocated from: #0 0x7f81c862bd28 in malloc (/usr/lib/x86_64-linux-gnu/libasan.so.3+0xc1d28) #1 0x7f81c6afea69 in pcre_get_substring (/lib/x86_64-linux-gnu/libpcre.so.3+0x27a69) #2 0x43206f7420676e68 () SUMMARY: AddressSanitizer: 8 byte(s) leaked in 4 allocation(s). --- src/detect-iprep.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/detect-iprep.c b/src/detect-iprep.c index e3cfe1b03288..765ceabdae39 100644 --- a/src/detect-iprep.c +++ b/src/detect-iprep.c @@ -341,6 +341,10 @@ int DetectIPRepSetup (DetectEngineCtx *de_ctx, Signature *s, const char *rawstr) name = NULL; pcre_free_substring(cmd_str); cmd_str = NULL; + pcre_free_substring(op_str); + op_str = NULL; + pcre_free_substring(value); + value = NULL; /* Okay so far so good, lets get this into a SigMatch * and put it in the Signature. */ @@ -360,6 +364,10 @@ int DetectIPRepSetup (DetectEngineCtx *de_ctx, Signature *s, const char *rawstr) pcre_free_substring(name); if (cmd_str != NULL) pcre_free_substring(cmd_str); + if (op_str != NULL) + pcre_free_substring(op_str); + if (value != NULL) + pcre_free_substring(value); if (cd != NULL) SCFree(cd); if (sm != NULL)