From 01e2bdaf30abac1c715d4d0436549f0bfc1deefb Mon Sep 17 00:00:00 2001 From: Douglas Bagnall Date: Fri, 3 May 2019 10:47:28 +1200 Subject: [PATCH] s4/rpc/dns: check for IP address errors at startup The silent failure might leave an indeterminate or zero address. CID: 1272838 Signed-off-by: Douglas Bagnall Reviewed-by: Gary Lockyer --- source4/rpc_server/dnsserver/dnsutils.c | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/source4/rpc_server/dnsserver/dnsutils.c b/source4/rpc_server/dnsserver/dnsutils.c index 173988ab318b..3e8aab2a5731 100644 --- a/source4/rpc_server/dnsserver/dnsutils.c +++ b/source4/rpc_server/dnsserver/dnsutils.c @@ -71,17 +71,23 @@ static struct DNS_ADDR_ARRAY *fill_dns_addr_array(TALLOC_CTX *mem_ctx, } for (i = 0; i < num_interfaces; i++) { + int ret; ipstr = iface_list_n_ip(ifaces, i); if (is_ipaddress_v4(ipstr)) { have_ipv4 = true; dns_addr_array->AddrArray[i].MaxSa[0] = 0x02; - inet_pton(AF_INET, ipstr, - &dns_addr_array->AddrArray[i].MaxSa[4]); + ret = inet_pton(AF_INET, ipstr, + &dns_addr_array->AddrArray[i].MaxSa[4]); } else { have_ipv6 = true; dns_addr_array->AddrArray[i].MaxSa[0] = 0x17; - inet_pton(AF_INET6, ipstr, - &dns_addr_array->AddrArray[i].MaxSa[8]); + ret = inet_pton(AF_INET6, ipstr, + &dns_addr_array->AddrArray[i].MaxSa[8]); + } + if (ret != 1) { /*yep, 1 means success for inet_pton */ + DBG_ERR("Interface %d address (%s) is invalid\n", + i, ipstr); + goto nomem; } } -- 2.34.1