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-5.0.7~11 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=refs%2Fpull%2F6223%2Fhead;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 53d93b45fe..ef689f1758 100644 --- a/src/detect-modbus.c +++ b/src/detect-modbus.c @@ -412,9 +412,13 @@ static DetectModbus *DetectModbusUnitIdParse(const char *str) if ((modbus = DetectModbusFunctionParse(str_ptr)) == NULL) { if ((modbus = DetectModbusAccessParse(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));