Fix problem with re-allocation of serverarray.

This commit is contained in:
Simon Kelley
2021-06-26 21:13:41 +01:00
parent c9efe8e5e1
commit 66b863c989
3 changed files with 9 additions and 6 deletions

View File

@@ -1103,7 +1103,7 @@ extern struct daemon {
struct iname *if_names, *if_addrs, *if_except, *dhcp_except, *auth_peers, *tftp_interfaces;
struct bogus_addr *bogus_addr, *ignore_addr;
struct server *servers, *local_domains, **serverarray, *no_rebind;
int serverarraysz;
int serverarraysz, serverarrayhwm;
struct ipsets *ipsets;
u32 allowlist_mask;
struct allowlist *allowlists;

View File

@@ -37,17 +37,21 @@ void build_server_array(void)
for (serv = daemon->local_domains; serv; serv = serv->next)
count++;
if (count > daemon->serverarraysz)
daemon->serverarraysz = count;
if (count > daemon->serverarrayhwm)
{
struct server **new;
count += 10; /* A few extra without re-allocating. */
if ((new = whine_malloc(count * sizeof(struct server *))))
{
if (daemon->serverarray)
free(daemon->serverarray);
daemon->serverarray = new;
daemon->serverarraysz = count;
daemon->serverarrayhwm = count;
}
}

View File

@@ -935,7 +935,6 @@ char *parse_server(char *arg, union mysockaddr *addr, union mysockaddr *source_a
static int domain_rev4(char *domain, struct in_addr addr, int msize)
{
in_addr_t a = ntohl(addr.s_addr);
char *p;
*domain = 0;