From: Victor Julien Date: Tue, 23 Oct 2018 11:56:50 +0000 (+0200) Subject: bytetest: don't leak memory in error condition X-Git-Tag: suricata-4.1.0~37 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=528379601850ba630767658d2dbddbf1acacb6fd;p=thirdparty%2Fsuricata.git bytetest: don't leak memory in error condition --- diff --git a/src/detect-bytetest.c b/src/detect-bytetest.c index 5573e78665..28450e1b31 100644 --- a/src/detect-bytetest.c +++ b/src/detect-bytetest.c @@ -433,12 +433,11 @@ static int DetectBytetestSetup(DetectEngineCtx *de_ctx, Signature *s, const char { SigMatch *sm = NULL; SigMatch *prev_pm = NULL; - DetectBytetestData *data = NULL; char *value = NULL; char *offset = NULL; int ret = -1; - data = DetectBytetestParse(optstr, &value, &offset); + DetectBytetestData *data = DetectBytetestParse(optstr, &value, &offset); if (data == NULL) goto error; @@ -513,6 +512,7 @@ static int DetectBytetestSetup(DetectEngineCtx *de_ctx, Signature *s, const char data->value = ((DetectByteExtractData *)bed_sm->ctx)->local_id; data->flags |= DETECT_BYTETEST_VALUE_BE; SCFree(value); + value = NULL; } if (offset != NULL) { @@ -525,6 +525,7 @@ static int DetectBytetestSetup(DetectEngineCtx *de_ctx, Signature *s, const char data->offset = ((DetectByteExtractData *)bed_sm->ctx)->local_id; data->flags |= DETECT_BYTETEST_OFFSET_BE; SCFree(offset); + offset = NULL; } sm = SigMatchAlloc(); @@ -551,6 +552,10 @@ static int DetectBytetestSetup(DetectEngineCtx *de_ctx, Signature *s, const char ret = 0; return ret; error: + if (offset) + SCFree(offset); + if (value) + SCFree(value); DetectBytetestFree(data); return ret; }