From eb97e21a8f0d4f01bbcaeeacae2c1266def4b4cb Mon Sep 17 00:00:00 2001 From: Willy Tarreau Date: Sun, 26 Apr 2026 22:48:17 +0200 Subject: [PATCH] BUG/MINOR: tools: free previously allocated strings on strdup failure in backup_env() When strdup() fails after some entries have already been strdup'd, the function returned -1 without freeing previously allocated strings. Added cleanup loop to free all previously strdup'd entries and reset init_env. This can be backported to 3.1. --- src/tools.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/tools.c b/src/tools.c index cdd9cbe5f..741622fa6 100644 --- a/src/tools.c +++ b/src/tools.c @@ -7562,6 +7562,13 @@ int backup_env(void) if (*tmp == NULL) { ha_alert("Cannot allocate memory to backup env variable '%s'.\n", *env); + tmp = init_env; + while (*tmp) { + free(*tmp); + tmp++; + } + free(init_env); + init_env = NULL; return -1; } tmp++;