diff options
author | Haifeng Lin <haifeng.lin@huawei.com> | 2017-07-04 08:52:57 +0800 |
---|---|---|
committer | Ben Pfaff <blp@ovn.org> | 2017-07-12 08:50:56 -0700 |
commit | fec5f434747db217bcd320dd36e3e5afb0dcf9a1 (patch) | |
tree | 2272921425bf3dc61c436ed4712d41a3f74df7c0 | |
parent | 61b304b192352c0e042b1d4563ebb6ad8b8b2ac8 (diff) | |
download | openvswitch-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.c | 3 |
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; } |