summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--zebra/ChangeLog2
-rw-r--r--zebra/if_ioctl.c7
2 files changed, 9 insertions, 0 deletions
diff --git a/zebra/ChangeLog b/zebra/ChangeLog
index 9c014929..169f0a63 100644
--- a/zebra/ChangeLog
+++ b/zebra/ChangeLog
@@ -2,6 +2,8 @@
* connected.c: (connected_up_ipv{4,6}) Include interface metric on
connected routes.
+ * if_ioctl.c: (if_getaddrs) Be defensive about assuming
+ that struct ifaddrs will have ifa_addr filled in.
2006-01-16 Paul Jakma <paul.jakma@sun.com>
diff --git a/zebra/if_ioctl.c b/zebra/if_ioctl.c
index b00a29cd..788184f8 100644
--- a/zebra/if_ioctl.c
+++ b/zebra/if_ioctl.c
@@ -228,6 +228,13 @@ if_getaddrs (void)
for (ifapfree = ifap; ifap; ifap = ifap->ifa_next)
{
+ if (ifap->ifa_addr == NULL)
+ {
+ zlog_err ("%s: nonsensical ifaddr with NULL ifa_addr, ifname %s",
+ __func__, (ifap->ifa_name ? ifap->ifa_name : "(null)"));
+ continue;
+ }
+
ifp = if_lookup_by_name (ifap->ifa_name);
if (ifp == NULL)
{