More missing checks, outside of usr.sbin.
Missing: isakmpd and ifconfig
I have not yet looked at libc internal use, libpcap and regress/.
ok?
diff --git sbin/iked/parse.y sbin/iked/parse.y
index aedbb74f3fd..b02ff55d4e7 100644
--- sbin/iked/parse.y
+++ sbin/iked/parse.y
@@ -2166,7 +2166,8 @@ ifa_load(void)
err(1, "ifa_load: getifaddrs");
for (ifa = ifap; ifa; ifa = ifa->ifa_next) {
- if (!(ifa->ifa_addr->sa_family == AF_INET ||
+ if (ifa->ifa_addr == NULL ||
+ !(ifa->ifa_addr->sa_family == AF_INET ||
ifa->ifa_addr->sa_family == AF_INET6 ||
ifa->ifa_addr->sa_family == AF_LINK))
continue;
diff --git sbin/ipsecctl/parse.y sbin/ipsecctl/parse.y
index d61f6d5e151..5121d8bb655 100644
--- sbin/ipsecctl/parse.y
+++ sbin/ipsecctl/parse.y
@@ -1827,7 +1827,8 @@ ifa_load(void)
err(1, "ifa_load: getifaddrs");
for (ifa = ifap; ifa; ifa = ifa->ifa_next) {
- if (!(ifa->ifa_addr->sa_family == AF_INET ||
+ if (ifa->ifa_addr == NULL ||
+ !(ifa->ifa_addr->sa_family == AF_INET ||
ifa->ifa_addr->sa_family == AF_INET6 ||
ifa->ifa_addr->sa_family == AF_LINK))
continue;
diff --git sbin/pfctl/pfctl_parser.c sbin/pfctl/pfctl_parser.c
index 32b14d8b4cb..164b0639a48 100644
--- sbin/pfctl/pfctl_parser.c
+++ sbin/pfctl/pfctl_parser.c
@@ -1352,7 +1352,8 @@ ifa_load(void)
err(1, "getifaddrs");
for (ifa = ifap; ifa; ifa = ifa->ifa_next) {
- if (!(ifa->ifa_addr->sa_family == AF_INET ||
+ if (ifa->ifa_addr == NULL ||
+ !(ifa->ifa_addr->sa_family == AF_INET ||
ifa->ifa_addr->sa_family == AF_INET6 ||
ifa->ifa_addr->sa_family == AF_LINK))
continue;
diff --git sbin/route/route.c sbin/route/route.c
index c13f5b6be07..e1d31902e98 100644
--- sbin/route/route.c
+++ sbin/route/route.c
@@ -506,7 +506,8 @@ setsource(int argc, char **argv)
for (ifa = ifap; ifa; ifa = ifa->ifa_next) {
if (if_nametoindex(ifa->ifa_name) != ifindex)
continue;
- if (!(ifa->ifa_addr->sa_family == AF_INET ||
+ if (ifa->ifa_addr == NULL ||
+ !(ifa->ifa_addr->sa_family == AF_INET ||
ifa->ifa_addr->sa_family == AF_INET6))
continue;
if ((af != AF_UNSPEC) &&
diff --git sbin/slaacd/frontend.c sbin/slaacd/frontend.c
index 6bdfc92339d..0e877d03bdb 100644
--- sbin/slaacd/frontend.c
+++ sbin/slaacd/frontend.c
@@ -584,6 +584,8 @@ update_autoconf_addresses(uint32_t if_index, char* if_name)
for (ifa = ifap; ifa != NULL; ifa = ifa->ifa_next) {
if (strcmp(if_name, ifa->ifa_name) != 0)
continue;
+ if (ifa->ifa_addr == NULL)
+ continue;
if (ifa->ifa_addr->sa_family == AF_LINK)
imsg_link_state.link_state =
@@ -937,6 +939,8 @@ get_lladdr(char *if_name, struct ether_addr *mac, struct
sockaddr_in6 *ll)
for (ifa = ifap; ifa != NULL; ifa = ifa->ifa_next) {
if (strcmp(if_name, ifa->ifa_name) != 0)
continue;
+ if (ifa->ifa_addr == NULL)
+ continue;
switch(ifa->ifa_addr->sa_family) {
case AF_LINK:
diff --git usr.bin/netstat/route.c usr.bin/netstat/route.c
index 9e8e22ba54b..1aef3f9cd3c 100644
--- usr.bin/netstat/route.c
+++ usr.bin/netstat/route.c
@@ -368,7 +368,8 @@ rdomainpr(void)
getifaddrs(&ifap);
for (ifa = ifap; ifa; ifa = ifa->ifa_next) {
- if (ifa->ifa_addr->sa_family != AF_LINK)
+ if (ifa->ifa_addr == NULL ||
+ ifa->ifa_addr->sa_family != AF_LINK)
continue;
ifd = ifa->ifa_data;
if (rdom_if[ifd->ifi_rdomain] == NULL) {
diff --git usr.bin/rusers/rusers.c usr.bin/rusers/rusers.c
index 53f50a8ce6a..124ebd6cc9c 100644
--- usr.bin/rusers/rusers.c
+++ usr.bin/rusers/rusers.c
@@ -558,7 +558,8 @@ allhosts(void)
*/
for (i = 0; i < 6; i++) {
for (ifa = ifap; ifa; ifa = ifa->ifa_next) {
- if (ifa->ifa_addr->sa_family != AF_INET ||
+ if (ifa->ifa_addr == NULL ||
+ ifa->ifa_addr->sa_family != AF_INET ||
!(ifa->ifa_flags & IFF_BROADCAST) ||
!(ifa->ifa_flags & IFF_UP) ||
ifa->ifa_broadaddr == NULL ||