summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHaifeng Lin <haifeng.lin@huawei.com>2017-07-04 08:52:57 +0800
committerBen Pfaff <blp@ovn.org>2017-07-12 08:50:56 -0700
commitfec5f434747db217bcd320dd36e3e5afb0dcf9a1 (patch)
tree2272921425bf3dc61c436ed4712d41a3f74df7c0
parent61b304b192352c0e042b1d4563ebb6ad8b8b2ac8 (diff)
downloadopenvswitch-fec5f434747db217bcd320dd36e3e5afb0dcf9a1.tar.gz
netdev: Fix crash when ifa_netmask is null.
glibc sometimes doesn't initialize the ifa_netmask and ifa_addr fields, if the ioctl to fetch them fails. Check ifa_name also just for paranoia. Signed-off-by: Haifeng Lin <haifeng.lin@huawei.com> Signed-off-by: Ben Pfaff <blp@ovn.org>
-rw-r--r--lib/netdev.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/lib/netdev.c b/lib/netdev.c
index 73c8aa5bf..894d88008 100644
--- a/lib/netdev.c
+++ b/lib/netdev.c
@@ -1936,7 +1936,8 @@ netdev_get_addrs(const char dev[], struct in6_addr **paddr,
for (ifa = if_addr_list; ifa; ifa = ifa->ifa_next) {
int family;
- if (strncmp(ifa->ifa_name, dev, IFNAMSIZ) || ifa->ifa_addr == NULL) {
+ if (!ifa->ifa_name || !ifa->ifa_addr || !ifa->ifa_netmask
+ || strncmp(ifa->ifa_name, dev, IFNAMSIZ)) {
continue;
}