From af9682464216dc5f9cdb497a1e72cb7305231be5 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Tue, 2 Sep 2025 17:10:42 +0200 Subject: [PATCH] - Fix #1324: Memory leak in 'msgparse.c' in 'parse_edns_options_from_query(...)'. --- doc/Changelog | 2 ++ util/configparser.y | 10 ++++++---- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/doc/Changelog b/doc/Changelog index d7e1a0ddc..77c4b554f 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,6 +1,8 @@ 2 September 2025: Wouter - Fix #1235: Outdated Python2 code in unbound/pythonmod/examples/log.py. + - Fix #1324: Memory leak in 'msgparse.c' in + 'parse_edns_options_from_query(...)'. 1 September 2025: Wouter - Fix for #1324: Fix to free edns options scratch in ratelimit case. diff --git a/util/configparser.y b/util/configparser.y index ebb23f41c..ba754b3e5 100644 --- a/util/configparser.y +++ b/util/configparser.y @@ -1168,11 +1168,13 @@ server_http_endpoint: VAR_HTTP_ENDPOINT STRING_ARG free(cfg_parser->cfg->http_endpoint); if($2 && $2[0] != '/') { cfg_parser->cfg->http_endpoint = malloc(strlen($2)+2); - if(!cfg_parser->cfg->http_endpoint) + if(cfg_parser->cfg->http_endpoint) { + cfg_parser->cfg->http_endpoint[0] = '/'; + memmove(cfg_parser->cfg->http_endpoint+1, $2, + strlen($2)+1); + } else { yyerror("out of memory"); - cfg_parser->cfg->http_endpoint[0] = '/'; - memmove(cfg_parser->cfg->http_endpoint+1, $2, - strlen($2)+1); + } free($2); } else { cfg_parser->cfg->http_endpoint = $2; -- 2.47.3