From 8ea4fa9c36eceb44866150446792787d333bc853 Mon Sep 17 00:00:00 2001 From: Marian Krivos Date: Tue, 31 Jul 2012 20:03:36 +0000 Subject: [PATCH] fix crash under linux IPV6 in NetworkInterface::list() if currIface->ifa_addr is NULL --- Net/src/NetworkInterface.cpp | 27 +++++++++++++++------------ 1 file changed, 15 insertions(+), 12 deletions(-) diff --git a/Net/src/NetworkInterface.cpp b/Net/src/NetworkInterface.cpp index e89c274b6..ca6343b0d 100644 --- a/Net/src/NetworkInterface.cpp +++ b/Net/src/NetworkInterface.cpp @@ -903,19 +903,22 @@ NetworkInterface::NetworkInterfaceList NetworkInterface::list() IPAddress addr; bool haveAddr = false; int ifIndex(-1); - switch (currIface->ifa_addr->sa_family) + if (currIface->ifa_addr) { - case AF_INET6: - ifIndex = if_nametoindex(currIface->ifa_name); - addr = IPAddress(&reinterpret_cast(currIface->ifa_addr)->sin6_addr, sizeof(struct in6_addr), ifIndex); - haveAddr = true; - break; - case AF_INET: - addr = IPAddress(*(currIface->ifa_addr)); - haveAddr = true; - break; - default: - break; + switch (currIface->ifa_addr->sa_family) + { + case AF_INET6: + ifIndex = if_nametoindex(currIface->ifa_name); + addr = IPAddress(&reinterpret_cast(currIface->ifa_addr)->sin6_addr, sizeof(struct in6_addr), ifIndex); + haveAddr = true; + break; + case AF_INET: + addr = IPAddress(*(currIface->ifa_addr)); + haveAddr = true; + break; + default: + break; + } } if (haveAddr) {