From: Ken Raeburn Date: Tue, 26 Aug 2003 16:57:32 +0000 (+0000) Subject: * foreachaddr.c (foreach_localaddr) [HAVE_IFADDRS_H]: Skip over any returned X-Git-Tag: krb5-1.4-beta1~759 X-Git-Url: http://git.tremily.us/?a=commitdiff_plain;h=b8972b4c97dbc1c7960158b9e05c83a35efcb0e8;p=krb5.git * 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 --- diff --git a/src/include/ChangeLog b/src/include/ChangeLog index 032343014..58830ef5e 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 101f8efca..f91034a77 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; }