From 18226f1c17e552e60800f4bc734f6c23e6054ea2 Mon Sep 17 00:00:00 2001 From: ihsinme <61293369+ihsinme@users.noreply.github.com> Date: Mon, 9 Nov 2020 18:41:22 +0300 Subject: [PATCH 1/4] fixing a possible memory leak. --- services/listen_dnsport.c | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/services/listen_dnsport.c b/services/listen_dnsport.c index e506eeb31..744f204ac 100644 --- a/services/listen_dnsport.c +++ b/services/listen_dnsport.c @@ -1404,6 +1404,7 @@ static int resolve_ifa_name(struct ifaddrs *ifas, const char *search_ifa, char ***ip_addresses, int *ip_addresses_size) { struct ifaddrs *ifa; + void * tmpbuf; int last_ip_addresses_size = *ip_addresses_size; for(ifa = ifas; ifa != NULL; ifa = ifa->ifa_next) { @@ -1468,10 +1469,13 @@ resolve_ifa_name(struct ifaddrs *ifas, const char *search_ifa, char ***ip_addres } verbose(4, "interface %s has address %s", search_ifa, addr_buf); - *ip_addresses = realloc(*ip_addresses, sizeof(char *) * (*ip_addresses_size + 1)); - if(!*ip_addresses) { + tmpbuf = realloc(*ip_addresses, sizeof(char *) * (*ip_addresses_size + 1)); + if(!tmpbuf) { + free(*ip_addresses); log_err("realloc failed: out of memory"); return 0; + } else { + *ip_addresses = tmpbuf; } (*ip_addresses)[*ip_addresses_size] = strdup(addr_buf); if(!(*ip_addresses)[*ip_addresses_size]) { @@ -1482,10 +1486,13 @@ resolve_ifa_name(struct ifaddrs *ifas, const char *search_ifa, char ***ip_addres } if (*ip_addresses_size == last_ip_addresses_size) { - *ip_addresses = realloc(*ip_addresses, sizeof(char *) * (*ip_addresses_size + 1)); - if(!*ip_addresses) { + tmpbuf = realloc(*ip_addresses, sizeof(char *) * (*ip_addresses_size + 1)); + if(!tmpbuf) { + free(*ip_addresses); log_err("realloc failed: out of memory"); return 0; + } else { + *ip_addresses = tmpbuf; } (*ip_addresses)[*ip_addresses_size] = strdup(search_ifa); if(!(*ip_addresses)[*ip_addresses_size]) { From 3926035f30b4eaeece1453dbfb5a7b866530a05c Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Tue, 10 Nov 2020 08:07:28 +0100 Subject: [PATCH 2/4] Changelog note for #341 and layout change. - Fix #341: fixing a possible memory leak. --- doc/Changelog | 3 +++ services/listen_dnsport.c | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/doc/Changelog b/doc/Changelog index 181aaad05..e8314747e 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,6 @@ +10 November 2020: Wouter + - Fix #341: fixing a possible memory leak. + 27 October 2020: Wouter - In man page note that tls-cert-bundle is read before permission drop and chroot. diff --git a/services/listen_dnsport.c b/services/listen_dnsport.c index 744f204ac..71c8eb159 100644 --- a/services/listen_dnsport.c +++ b/services/listen_dnsport.c @@ -1404,7 +1404,7 @@ static int resolve_ifa_name(struct ifaddrs *ifas, const char *search_ifa, char ***ip_addresses, int *ip_addresses_size) { struct ifaddrs *ifa; - void * tmpbuf; + void *tmpbuf; int last_ip_addresses_size = *ip_addresses_size; for(ifa = ifas; ifa != NULL; ifa = ifa->ifa_next) { From 7977e1c4cb78c99e5a7aa449275b7a8e8998221c Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Tue, 10 Nov 2020 13:51:56 +0100 Subject: [PATCH 3/4] - Fix memory leak after fix for possible memory leak failure. --- doc/Changelog | 1 + services/listen_dnsport.c | 2 -- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/doc/Changelog b/doc/Changelog index e8314747e..c9e871011 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,5 +1,6 @@ 10 November 2020: Wouter - Fix #341: fixing a possible memory leak. + - Fix memory leak after fix for possible memory leak failure. 27 October 2020: Wouter - In man page note that tls-cert-bundle is read before permission diff --git a/services/listen_dnsport.c b/services/listen_dnsport.c index 71c8eb159..15ee6a389 100644 --- a/services/listen_dnsport.c +++ b/services/listen_dnsport.c @@ -1471,7 +1471,6 @@ resolve_ifa_name(struct ifaddrs *ifas, const char *search_ifa, char ***ip_addres tmpbuf = realloc(*ip_addresses, sizeof(char *) * (*ip_addresses_size + 1)); if(!tmpbuf) { - free(*ip_addresses); log_err("realloc failed: out of memory"); return 0; } else { @@ -1488,7 +1487,6 @@ resolve_ifa_name(struct ifaddrs *ifas, const char *search_ifa, char ***ip_addres if (*ip_addresses_size == last_ip_addresses_size) { tmpbuf = realloc(*ip_addresses, sizeof(char *) * (*ip_addresses_size + 1)); if(!tmpbuf) { - free(*ip_addresses); log_err("realloc failed: out of memory"); return 0; } else { From 5385e2e09444d60df1bcbd3a173846ba933b03df Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Tue, 10 Nov 2020 15:31:20 +0100 Subject: [PATCH 4/4] - Fix #343: Fail to build --with-libnghttp2 with error: 'SSIZE_MAX' undeclared. --- doc/Changelog | 2 ++ services/listen_dnsport.c | 1 + 2 files changed, 3 insertions(+) diff --git a/doc/Changelog b/doc/Changelog index c9e871011..47fcd9178 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,6 +1,8 @@ 10 November 2020: Wouter - Fix #341: fixing a possible memory leak. - Fix memory leak after fix for possible memory leak failure. + - Fix #343: Fail to build --with-libnghttp2 with error: 'SSIZE_MAX' + undeclared. 27 October 2020: Wouter - In man page note that tls-cert-bundle is read before permission diff --git a/services/listen_dnsport.c b/services/listen_dnsport.c index 15ee6a389..10a7aec60 100644 --- a/services/listen_dnsport.c +++ b/services/listen_dnsport.c @@ -43,6 +43,7 @@ # include #endif #include +#include #ifdef USE_TCP_FASTOPEN #include #endif