From: Philippe Antoine Date: Tue, 22 Jun 2021 06:16:40 +0000 (+0200) Subject: modbus: fix memory leak in signature parsing X-Git-Tag: suricata-6.0.3~17 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=9ef061dc62a1778c2ea66bf903275f2df423955d;p=thirdparty%2Fsuricata.git modbus: fix memory leak in signature parsing Bug: #4538. --- diff --git a/src/detect-modbus.c b/src/detect-modbus.c index 3fb52819d4..68fb780b79 100644 --- a/src/detect-modbus.c +++ b/src/detect-modbus.c @@ -436,9 +436,13 @@ static DetectModbus *DetectModbusUnitIdParse(DetectEngineCtx *de_ctx, const char if ((modbus = DetectModbusFunctionParse(de_ctx, str_ptr)) == NULL) { if ((modbus = DetectModbusAccessParse(de_ctx, str_ptr)) == NULL) { SCLogError(SC_ERR_PCRE_MATCH, "invalid modbus option"); + if (str_ptr != NULL) + pcre_free_substring(str_ptr); goto error; } } + if (str_ptr != NULL) + pcre_free_substring(str_ptr); } else { /* We have only unit id Modbus option */ modbus = (DetectModbus *) SCCalloc(1, sizeof(DetectModbus)); @@ -1009,4 +1013,4 @@ void DetectModbusRegisterTests(void) UtRegisterTest("DetectModbusTest13 - Testing a range of unit_id", DetectModbusTest13); } -#endif /* UNITTESTS */ \ No newline at end of file +#endif /* UNITTESTS */