Another set of NULL checks in programs under usr.sbin/

ok?

diff --git usr.sbin/eigrpd/parse.y usr.sbin/eigrpd/parse.y
index f024e3cf0cd..0ac9431e829 100644
--- usr.sbin/eigrpd/parse.y
+++ usr.sbin/eigrpd/parse.y
@@ -1246,7 +1246,8 @@ get_rtr_id(void)
        for (ifa = ifap; ifa; ifa = ifa->ifa_next) {
                if (strncmp(ifa->ifa_name, "carp", 4) == 0)
                        continue;
-               if (ifa->ifa_addr->sa_family != AF_INET)
+               if (ifa->ifa_addr == NULL ||
+                   ifa->ifa_addr->sa_family != AF_INET)
                        continue;
                cur = ((struct sockaddr_in *)ifa->ifa_addr)->sin_addr.s_addr;
                if ((cur & localnet) == localnet)       /* skip 127/8 */
diff --git usr.sbin/httpd/parse.y usr.sbin/httpd/parse.y
index b3c8786aaee..a1afcc799c1 100644
--- usr.sbin/httpd/parse.y
+++ usr.sbin/httpd/parse.y
@@ -2124,7 +2124,8 @@ host_if(const char *s, struct addresslist *al, int max,
 
  nextaf:
        for (p = ifap; p != NULL && cnt < max; p = p->ifa_next) {
-               if (p->ifa_addr->sa_family != af ||
+               if (p->ifa_addr == NULL ||
+                   p->ifa_addr->sa_family != af ||
                    (strcmp(s, p->ifa_name) != 0 &&
                    !is_if_in_group(p->ifa_name, s)))
                        continue;
diff --git usr.sbin/ifstated/ifstated.c usr.sbin/ifstated/ifstated.c
index 225f5aaa9e0..248c2a7d2bd 100644
--- usr.sbin/ifstated/ifstated.c
+++ usr.sbin/ifstated/ifstated.c
@@ -642,7 +642,8 @@ fetch_ifstate(int do_eval)
                fatal("getifaddrs");
 
        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) {
                        struct if_data *ifdata = ifa->ifa_data;
                        scan_ifstate(ifa->ifa_name, ifdata->ifi_link_state,
                            do_eval);
diff --git usr.sbin/inetd/inetd.c usr.sbin/inetd/inetd.c
index 4627ef81148..24a08c9b901 100644
--- usr.sbin/inetd/inetd.c
+++ usr.sbin/inetd/inetd.c
@@ -487,7 +487,8 @@ dg_broadcast(struct in_addr *in)
        if (getifaddrs(&ifap) == -1)
                return (0);
        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) == 0)
                        continue;
                sin = (struct sockaddr_in *)ifa->ifa_broadaddr;
diff --git usr.sbin/ldapd/parse.y usr.sbin/ldapd/parse.y
index c003b3fcb6a..1e3801383fa 100644
--- usr.sbin/ldapd/parse.y
+++ usr.sbin/ldapd/parse.y
@@ -1122,6 +1122,8 @@ interface(const char *s, const char *cert,
        for (p = ifap; p != NULL; p = p->ifa_next) {
                if (strcmp(s, p->ifa_name) != 0)
                        continue;
+               if (p->ifa_addr == NULL)
+                       continue;
 
                switch (p->ifa_addr->sa_family) {
                case AF_INET:
diff --git usr.sbin/mrouted/cfparse.y usr.sbin/mrouted/cfparse.y
index 0b8af93ea21..bf06644987c 100644
--- usr.sbin/mrouted/cfparse.y
+++ usr.sbin/mrouted/cfparse.y
@@ -558,7 +558,8 @@ ifconfaddr(a)
        return (NULL);
 
     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 &&
                ((struct sockaddr_in *)ifa->ifa_addr)->sin_addr.s_addr == a) {
                strlcpy(ifname, ifa->ifa_name, sizeof(ifname));
                freeifaddrs(ifap);
diff --git usr.sbin/mtrace/mtrace.c usr.sbin/mtrace/mtrace.c
index 5acf9ab3171..15b44fc92f7 100644
--- usr.sbin/mtrace/mtrace.c
+++ usr.sbin/mtrace/mtrace.c
@@ -284,8 +284,9 @@ get_netmask(int s, u_int32_t dst)
        return (retval);
     }
     for (ifa = ifap; ifa; ifa = ifa->ifa_next) {
-       if (ifa->ifa_addr->sa_family != AF_INET)
-             continue;
+       if (ifa->ifa_addr == NULL ||
+           ifa->ifa_addr->sa_family != AF_INET)
+               continue;
        if_addr = ((struct sockaddr_in *)ifa->ifa_addr)->sin_addr.s_addr;
        if_mask = ((struct sockaddr_in *)ifa->ifa_netmask)->sin_addr.s_addr;
        if ((dst & if_mask) == (if_addr & if_mask)) {
diff --git usr.sbin/npppd/common/net_utils.c usr.sbin/npppd/common/net_utils.c
index e282f0dd2b5..c13679c116a 100644
--- usr.sbin/npppd/common/net_utils.c
+++ usr.sbin/npppd/common/net_utils.c
@@ -48,9 +48,10 @@ get_ifname_by_sockaddr(struct sockaddr *sa, char *ifname)
        ifname0 = NULL;
        /* I want other way than linear search */
        getifaddrs(&addr0);
-       for (addr = addr0; ifname0 == NULL&& addr != NULL;
+       for (addr = addr0; ifname0 == NULL && addr != NULL;
            addr = addr->ifa_next) {
-               if (addr->ifa_addr->sa_family != sa->sa_family ||
+               if (addr->ifa_addr == NULL ||
+                   addr->ifa_addr->sa_family != sa->sa_family ||
                    addr->ifa_addr->sa_len != sa->sa_len)
                        continue;
                switch (addr->ifa_addr->sa_family) {
diff --git usr.sbin/npppd/pppoe/pppoed.c usr.sbin/npppd/pppoe/pppoed.c
index 5b3f09dccb1..53905d5db33 100644
--- usr.sbin/npppd/pppoe/pppoed.c
+++ usr.sbin/npppd/pppoe/pppoed.c
@@ -256,7 +256,8 @@ pppoed_listener_start(pppoed_listener *_this, int restart)
        found = 0;
        for (ifa = ifa0; ifa != NULL; ifa = ifa->ifa_next) {
                sdl = (struct sockaddr_dl *)ifa->ifa_addr;
-               if (sdl->sdl_family != AF_LINK || sdl->sdl_type != IFT_ETHER ||
+               if (sdl == NULL ||
+                   sdl->sdl_family != AF_LINK || sdl->sdl_type != IFT_ETHER ||
                    sdl->sdl_alen != ETHER_ADDR_LEN)
                        continue;
                if (strcmp(ifa->ifa_name, _this->listen_ifname) == 0) {

Reply via email to