]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
MINOR: log/backend: always free parsing hints in resolve_logger()
authorAurelien DARRAGON <adarragon@haproxy.com>
Tue, 14 May 2024 14:18:05 +0000 (16:18 +0200)
committerAurelien DARRAGON <adarragon@haproxy.com>
Thu, 13 Jun 2024 13:43:09 +0000 (15:43 +0200)
Since resolve_logger() always resolves logger target (even when error
occurs), we must take care of freeing parsing hints because free_logger()
won't try to do it if target RESOLVED flag is set on the target.

This isn't considered as a bug because resolve_logger(), being a
postparsing check, will make haproxy immediately exit upon fatal error
in haproxy.c, but it's better to ensure that everything will be properly
freed if we decide to perform a clean exit upon postparsing checks error
in the future.

src/log.c

index 862e0299db37382b1209a23d0ccc5f3bcaeaae1a..a6d074915d563f0e4f95ce85a1d89214bda7256a 100644 (file)
--- a/src/log.c
+++ b/src/log.c
@@ -1427,18 +1427,15 @@ int resolve_logger(struct logger *logger, char **msg)
                if (!be) {
                        memprintf(msg, "uses unknown log backend '%s'", target->be_name);
                        err_code |= ERR_ALERT | ERR_FATAL;
-                       goto end;
                }
                else if (be->mode != PR_MODE_SYSLOG) {
                        memprintf(msg, "uses incompatible log backend '%s'", target->be_name);
                        err_code |= ERR_ALERT | ERR_FATAL;
-                       goto end;
                }
                ha_free(&target->be_name); /* backend is resolved and will replace name hint */
                target->be = be;
        }
 
- end:
        target->flags |= LOG_TARGET_FL_RESOLVED;
 
        return err_code;