Fix SEGV on --local= added by immediately previous commit.

This commit is contained in:
Simon Kelley
2022-11-17 19:51:15 +00:00
parent 7f227a83f2
commit 3e306c1202

View File

@@ -866,10 +866,7 @@ char *parse_server(char *arg, struct server_details *sdetails)
*sdetails->interface = 0; *sdetails->interface = 0;
sdetails->addr_type = AF_UNSPEC; sdetails->addr_type = AF_UNSPEC;
sdetails->valid = 0;
sdetails->hostinfo = sdetails->orig_hostinfo = NULL;
if (strcmp(arg, "#") == 0) if (strcmp(arg, "#") == 0)
{ {
if (sdetails->flags) if (sdetails->flags)
@@ -1104,6 +1101,8 @@ static char *domain_rev4(int from_file, char *server, struct in_addr *addr4, int
char interface[IF_NAMESIZE+1]; char interface[IF_NAMESIZE+1];
int count = 1, rem, addrbytes, addrbits; int count = 1, rem, addrbytes, addrbits;
struct server_details sdetails; struct server_details sdetails;
memset(&sdetails, 0, sizeof(struct server_details));
sdetails.addr = &serv_addr; sdetails.addr = &serv_addr;
sdetails.source_addr = &source_addr; sdetails.source_addr = &source_addr;
sdetails.interface = interface; sdetails.interface = interface;
@@ -1185,6 +1184,8 @@ static char *domain_rev6(int from_file, char *server, struct in6_addr *addr6, in
char interface[IF_NAMESIZE+1]; char interface[IF_NAMESIZE+1];
int count = 1, rem, addrbytes, addrbits; int count = 1, rem, addrbytes, addrbits;
struct server_details sdetails; struct server_details sdetails;
memset(&sdetails, 0, sizeof(struct server_details));
sdetails.addr = &serv_addr; sdetails.addr = &serv_addr;
sdetails.source_addr = &source_addr; sdetails.source_addr = &source_addr;
sdetails.interface = interface; sdetails.interface = interface;
@@ -2970,13 +2971,14 @@ static int one_opt(int option, char *arg, char *errstr, char *gen_err, int comma
union all_addr addr; union all_addr addr;
union mysockaddr serv_addr, source_addr; union mysockaddr serv_addr, source_addr;
char interface[IF_NAMESIZE+1]; char interface[IF_NAMESIZE+1];
struct server_details sdetails; struct server_details sdetails;
memset(&sdetails, 0, sizeof(struct server_details));
sdetails.addr = &serv_addr; sdetails.addr = &serv_addr;
sdetails.source_addr = &source_addr; sdetails.source_addr = &source_addr;
sdetails.interface = interface; sdetails.interface = interface;
sdetails.flags = &flags; sdetails.flags = &flags;
unhide_metas(arg); unhide_metas(arg);
/* split the domain args, if any and skip to the end of them. */ /* split the domain args, if any and skip to the end of them. */