From: Alexander Stephan Date: Mon, 1 Sep 2025 09:36:07 +0000 (+0000) Subject: BUG/MINOR: log: Add OOM checks for calloc() and malloc() in logformat parser and... X-Git-Tag: v3.3-dev8~47 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=22ac1f5ee9889eb7273201de0d92449d9fc5e3fa;p=thirdparty%2Fhaproxy.git BUG/MINOR: log: Add OOM checks for calloc() and malloc() in logformat parser and dup_logger() 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 --- diff --git a/src/log.c b/src/log.c index 0d1e9a35b..c7acb5b29 100644 --- 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));