From: Todd C. Miller Date: Sun, 19 Apr 2009 18:09:24 +0000 (+0000) Subject: Check for NULL ifa_addr and ifa_netmask. X-Git-Tag: SUDO_1_7_2~42 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=78c347990e662ded49556b0de73525b2d0821905;p=sudo Check for NULL ifa_addr and ifa_netmask. Adapted from a diff from Quest Software. --- diff --git a/interfaces.c b/interfaces.c index 2c0c1c6bf..f12f5bd4a 100644 --- a/interfaces.c +++ b/interfaces.c @@ -139,9 +139,13 @@ load_interfaces() switch(ifa->ifa_addr->sa_family) { case AF_INET: sin = (struct sockaddr_in *)ifa->ifa_addr; + if (sin == NULL) + continue; memcpy(&interfaces[i].addr, &sin->sin_addr, sizeof(struct in_addr)); sin = (struct sockaddr_in *)ifa->ifa_netmask; + if (sin == NULL) + continue; memcpy(&interfaces[i].netmask, &sin->sin_addr, sizeof(struct in_addr)); interfaces[i].family = AF_INET; @@ -150,9 +154,13 @@ load_interfaces() #ifdef HAVE_IN6_ADDR case AF_INET6: sin6 = (struct sockaddr_in6 *)ifa->ifa_addr; + if (sin6 == NULL) + continue; memcpy(&interfaces[i].addr, &sin6->sin6_addr, sizeof(struct in6_addr)); sin6 = (struct sockaddr_in6 *)ifa->ifa_netmask; + if (sin6 == NULL) + continue; memcpy(&interfaces[i].netmask, &sin6->sin6_addr, sizeof(struct in6_addr)); interfaces[i].family = AF_INET6;