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.0.6~27 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=985b6198d46701534fd44ef7ac3baac3c2d5c9e4;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 4dcb3127fe..8ca14e66b3 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; @@ -510,6 +509,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) { @@ -522,6 +522,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(); @@ -548,6 +549,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; }