For some network interface configurations, it is possible for
entries on the address list returned by getifaddrs() to have
ifa->ifa_addr set to NULL. Add checks to avoid dereferencing
ifa->ifa_addr in this case.
Fixes: a8704b502785 ("tunneling: Handle multiple ip address for given device.")
Signed-off-by: Lance Richardson <[email protected]>
---
lib/netdev.c | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/lib/netdev.c b/lib/netdev.c
index 31998b3..a57c238 100644
--- a/lib/netdev.c
+++ b/lib/netdev.c
@@ -1884,6 +1884,10 @@ netdev_get_addrs(const char dev[], struct in6_addr
**paddr,
for (ifa = if_addr_list; ifa; ifa = ifa->ifa_next) {
int family;
+ if (!ifa->ifa_addr) {
+ continue;
+ }
+
family = ifa->ifa_addr->sa_family;
if (family == AF_INET || family == AF_INET6) {
if (!strncmp(ifa->ifa_name, dev, IFNAMSIZ)) {
@@ -1901,7 +1905,7 @@ 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)) {
+ if (!ifa->ifa_addr || strncmp(ifa->ifa_name, dev, IFNAMSIZ)) {
continue;
}
--
2.5.5
_______________________________________________
dev mailing list
[email protected]
http://openvswitch.org/mailman/listinfo/dev