conserver: fix crash on early exit

Add pending patch, fixing a crash when conserver exits
without starting the server.

Link: https://github.com/bstansell/conserver/pull/97
Signed-off-by: Bjørn Mork <bjorn@mork.no>
This commit is contained in:
Bjørn Mork 2024-02-05 21:31:56 +01:00 committed by Hannu Nyman
parent 86a2b342de
commit 50876c8c49
1 changed files with 43 additions and 0 deletions

View File

@ -0,0 +1,43 @@
From ec846dfedde7931689ff0a56be5ba75a5aefc9ea Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Bj=C3=B8rn=20Mork?= <bjorn@mork.no>
Date: Mon, 5 Feb 2024 21:16:51 +0100
Subject: [PATCH] fix SEGFAULT on early exit with IPv6 enabled
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Some command line options, like e.g -V, will cause conserver
to exit before the IPv6 address variables are initialized.
Avoid the calls to freeaddrinfo() in these cases.
Signed-off-by: Bjørn Mork <bjorn@mork.no>
---
conserver/main.c | 10 ++++++----
1 file changed, 6 insertions(+), 4 deletions(-)
--- a/conserver/main.c
+++ b/conserver/main.c
@@ -53,8 +53,8 @@ int fAll = 0, fNoinit = 0, fVersion = 0,
char *pcConfig = CONFIGFILE;
int cMaxMemb = MAXMEMB;
#if USE_IPV6
-struct addrinfo *bindAddr;
-struct addrinfo *bindBaseAddr;
+struct addrinfo *bindAddr = (struct addrinfo *)0;
+struct addrinfo *bindBaseAddr = (struct addrinfo *)0;
#else
in_addr_t bindAddr = INADDR_ANY;
unsigned short bindPort;
@@ -781,8 +781,10 @@ DestroyDataStructures(void)
#if USE_IPV6
/* clean up addrinfo stucts */
- freeaddrinfo(bindAddr);
- freeaddrinfo(bindBaseAddr);
+ if ((struct addrinfo *)0 != bindAddr)
+ freeaddrinfo(bindAddr);
+ if ((struct addrinfo *)0 != bindBaseAddr)
+ freeaddrinfo(bindBaseAddr);
#else
if (myAddrs != (struct in_addr *)0)
free(myAddrs);