*************************************************/
/* Copyright (c) University of Cambridge 1995 - 2018 */
+/* Copyright (c) The Exim Maintainers 2021 */
/* See the file NOTICE for conditions of use and distribution. */
#ifdef STAND_ALONE
for (struct ifaddrs * ifa = ifalist; ifa; ifa = ifa->ifa_next)
{
- if (ifa->ifa_addr->sa_family != AF_INET
+ struct sockaddr * ifa_addr = ifa->ifa_addr;
+ if (!ifa_addr) continue;
+ if (ifa_addr->sa_family != AF_INET
#if HAVE_IPV6
- && ifa->ifa_addr->sa_family != AF_INET6
+ && ifa_addr->sa_family != AF_INET6
#endif /* HAVE_IPV6 */
)
continue;
/* Create a data block for the address, fill in the data, and put it on the
chain. */
- next = store_get(sizeof(ip_address_item));
+ next = store_get(sizeof(ip_address_item), FALSE);
next->next = NULL;
next->port = 0;
- (void)host_ntoa(-1, ifa->ifa_addr, next->address, NULL);
+ (void)host_ntoa(-1, ifa_addr, next->address, NULL);
- if (yield == NULL)
+ if (!yield)
yield = last = next;
else
{
/* Create a data block for the address, fill in the data, and put it on the
chain. */
- next = store_get(sizeof(ip_address_item));
+ next = store_get(sizeof(ip_address_item), FALSE);
next->next = NULL;
next->port = 0;
(void)host_ntoa(-1, addrp, next->address, NULL);
ip_address_item *
os_common_find_running_interfaces(void)
{
-ip_address_item *yield = store_get(sizeof(address_item));
+ip_address_item *yield = store_get(sizeof(address_item), FALSE);
yield->address = US"127.0.0.1";
yield->port = 0;
yield->next = NULL;
#if HAVE_IPV6
-yield->next = store_get(sizeof(address_item));
+yield->next = store_get(sizeof(address_item), FALSE);
yield->next->address = US"::1";
yield->next->port = 0;
yield->next->next = NULL;
res_state
os_get_dns_resolver_res(void)
{
- return &_res;
+return &_res;
}
#endif /* OS_GET_DNS_RESOLVER_RES */