]> git.ipfire.org Git - thirdparty/suricata.git/commitdiff
modbus: fix memory leak in signature parsing
authorPhilippe Antoine <contact@catenacyber.fr>
Tue, 22 Jun 2021 06:16:40 +0000 (08:16 +0200)
committerVictor Julien <victor@inliniac.net>
Tue, 22 Jun 2021 07:49:56 +0000 (09:49 +0200)
Bug: #4538.

src/detect-modbus.c

index 3fb52819d4f139efae5e4c0a463bc665981d740d..68fb780b79f39916c0649a46594acfc84212d7e6 100644 (file)
@@ -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 */