]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
BUG/MINOR: log: Add OOM checks for calloc() and malloc() in logformat parser and...
authorAlexander Stephan <alexander.stephan@sap.com>
Mon, 1 Sep 2025 09:36:07 +0000 (09:36 +0000)
committerWilly Tarreau <w@1wt.eu>
Tue, 2 Sep 2025 05:29:54 +0000 (07:29 +0200)
This patch adds missing out-of-memory (OOM) checks after calls
to `calloc()` and `malloc()` in the logformat parser and the
`dup_logger()` function. If memory allocation fails, an error
is reported or NULL is returned, preventing undefined behavior
in low-memory conditions.

Co-authored-by: Christian Norbert Menges <christian.norbert.menges@sap.com>
src/log.c

index 0d1e9a35b04601f04cc4d13815564dbaa5fad20a..c7acb5b2966b5dc269ced57fdc1ec1aa4f5e2e9f 100644 (file)
--- a/src/log.c
+++ b/src/log.c
@@ -573,11 +573,11 @@ int add_to_logformat_list(char *start, char *end, int type, struct lf_expr *lf_e
 
        if (type == LF_TEXT) { /* type text */
                struct logformat_node *node = calloc(1, sizeof(*node));
-               if (!node) {
+               str = calloc(1, end - start + 1);
+               if (unlikely(!node || !str)) {
                        memprintf(err, "out of memory error");
                        return 0;
                }
-               str = calloc(1, end - start + 1);
                strncpy(str, start, end - start);
                str[end - start] = '\0';
                node->arg = str;
@@ -1558,7 +1558,8 @@ struct logger *dup_logger(struct logger *def)
 
        BUG_ON(def->flags & LOGGER_FL_RESOLVED);
        cpy = malloc(sizeof(*cpy));
-
+       if (unlikely(!cpy))
+               return NULL;
        /* copy everything that can be easily copied */
        memcpy(cpy, def, sizeof(*cpy));