From b8972b4c97dbc1c7960158b9e05c83a35efcb0e8 Mon Sep 17 00:00:00 2001 From: Ken Raeburn Date: Tue, 26 Aug 2003 16:57:32 +0000 Subject: * foreachaddr.c (foreach_localaddr) [HAVE_IFADDRS_H]: Skip over any returned data structure with a NULL ifa_addr field. ticket: 1770 version_reported: 1.3 target_version: 1.3.2 tags: pullup git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@15790 dc483132-0cff-0310-8789-dd5450dbe970 --- src/include/ChangeLog | 5 +++++ src/include/foreachaddr.c | 14 ++++++++++++++ 2 files changed, 19 insertions(+) (limited to 'src/include') diff --git a/src/include/ChangeLog b/src/include/ChangeLog index 0323430141..58830ef5e1 100644 --- a/src/include/ChangeLog +++ b/src/include/ChangeLog @@ -1,3 +1,8 @@ +2003-08-26 Ken Raeburn + + * foreachaddr.c (foreach_localaddr) [HAVE_IFADDRS_H]: Skip over + any returned data structure with a NULL ifa_addr field. + 2003-08-21 Ken Raeburn * fake-addrinfo.h (getnameinfo): Define to my_fake_getnameinfo diff --git a/src/include/foreachaddr.c b/src/include/foreachaddr.c index 101f8efca9..f91034a77b 100644 --- a/src/include/foreachaddr.c +++ b/src/include/foreachaddr.c @@ -383,6 +383,20 @@ foreach_localaddr (/*@null@*/ void *data, if ((ifp->ifa_flags & IFF_UP) == 0) continue; if (ifp->ifa_flags & IFF_LOOPBACK) { + /* Pretend it's not up, so the second pass will skip + it. */ + ifp->ifa_flags &= ~IFF_UP; + continue; + } + if (ifp->ifa_addr == NULL) { + /* Can't use an interface without an address. Linux + apparently does this sometimes. [RT ticket 1770 from + Maurice Massar, also Debian bug 206851, shows the + problem with a PPP link on a newer kernel than I'm + running.] + + Pretend it's not up, so the second pass will skip + it. */ ifp->ifa_flags &= ~IFF_UP; continue; } -- cgit