]> git.ipfire.org Git - thirdparty/suricata.git/commitdiff
conf: init parser after check with stat() 12005/head
authorZemeteri Kamimizu <zemeterisan@gmail.com>
Thu, 3 Oct 2024 09:50:31 +0000 (12:50 +0300)
committerVictor Julien <victor@inliniac.net>
Tue, 22 Oct 2024 11:03:06 +0000 (13:03 +0200)
Commit changes are made to avoid possible memory leaks. If the parser
is initialized before configuration file checking, there was no deinit
call before function return. Do check config file existance and type
before YAML parser initialization, so we don't need to deinit parser
before exiting the function.

Bug: #7302
(cherry picked from commit 87e6e9374ff40847d3e7408afcd404374b629337)

src/conf-yaml-loader.c

index 2754b15567ea461c47c41dc4b1093bf87d63bfec..6785d5b4ef1557e8bf63e24ca51f04cb6dbd7568 100644 (file)
@@ -560,11 +560,6 @@ ConfYamlLoadFileWithPrefix(const char *filename, const char *prefix)
     int ret;
     ConfNode *root = ConfGetNode(prefix);
 
-    if (yaml_parser_initialize(&parser) != 1) {
-        SCLogError("failed to initialize yaml parser.");
-        return -1;
-    }
-
     struct stat stat_buf;
     /* coverity[toctou] */
     if (stat(filename, &stat_buf) == 0) {
@@ -576,6 +571,11 @@ ConfYamlLoadFileWithPrefix(const char *filename, const char *prefix)
         }
     }
 
+    if (yaml_parser_initialize(&parser) != 1) {
+        SCLogError("failed to initialize yaml parser.");
+        return -1;
+    }
+
     /* coverity[toctou] */
     infile = fopen(filename, "r");
     if (infile == NULL) {