From 4f80cb5f69eab91dbb58c5e8518abdf29f853b6c Mon Sep 17 00:00:00 2001 From: Zemeteri Kamimizu Date: Thu, 3 Oct 2024 12:50:31 +0300 Subject: [PATCH] conf: init parser after check with stat() 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 | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/conf-yaml-loader.c b/src/conf-yaml-loader.c index 2754b15567..6785d5b4ef 100644 --- a/src/conf-yaml-loader.c +++ b/src/conf-yaml-loader.c @@ -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) { -- 2.47.2