diff options
author | Ken Raeburn <raeburn@mit.edu> | 2004-10-06 23:51:21 +0000 |
---|---|---|
committer | Ken Raeburn <raeburn@mit.edu> | 2004-10-06 23:51:21 +0000 |
commit | 054856b97becdce9591dfb470eb1e53016006d82 (patch) | |
tree | 09be0025423b3b7ad42961ecbd47be22b151b5ff | |
parent | 2104847a26d384bb50d474a108c3997c453d5a3d (diff) | |
download | krb5-054856b97becdce9591dfb470eb1e53016006d82.zip krb5-054856b97becdce9591dfb470eb1e53016006d82.tar.gz krb5-054856b97becdce9591dfb470eb1e53016006d82.tar.bz2 |
* localaddr.c (print_addr): If getnameinfo returns EAI_SYSTEM, report what the
system error is.
Also fix a fencepost error in the last change.
git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@16809 dc483132-0cff-0310-8789-dd5450dbe970
-rw-r--r-- | src/lib/krb5/os/ChangeLog | 2 | ||||
-rw-r--r-- | src/lib/krb5/os/localaddr.c | 13 |
2 files changed, 10 insertions, 5 deletions
diff --git a/src/lib/krb5/os/ChangeLog b/src/lib/krb5/os/ChangeLog index 1258c91..f75f0c0 100644 --- a/src/lib/krb5/os/ChangeLog +++ b/src/lib/krb5/os/ChangeLog @@ -3,6 +3,8 @@ * localaddr.c (foreach_localaddr): Be more careful not to walk past the end of the ifreq array. (get_ifreq_array): Return 0 in success case, not errno. + (print_addr): If getnameinfo returns EAI_SYSTEM, report what the + system error is. * localaddr.c (get_ifreq_array): Split out from foreach_localaddr general version. diff --git a/src/lib/krb5/os/localaddr.c b/src/lib/krb5/os/localaddr.c index 9132466..9af5a5e 100644 --- a/src/lib/krb5/os/localaddr.c +++ b/src/lib/krb5/os/localaddr.c @@ -955,10 +955,10 @@ foreach_localaddr (/*@null@*/ void *data, The Samba mailing list archives mention that NTP looks for the size on these systems: *-fujitsu-uxp* *-ncr-sysv4* *-univel-sysv*. */ - for (i = 0; i + sizeof(struct ifreq) < n; i+= ifreq_size(*ifr) ) { + for (i = 0; i + sizeof(struct ifreq) <= n; i+= ifreq_size(*ifr) ) { ifr = (struct ifreq *)((caddr_t) buf+i); /* In case ifreq_size is more than sizeof(). */ - if (i + ifreq_size(*ifr) >= n) + if (i + ifreq_size(*ifr) > n) break; strncpy(ifreq.ifr_name, ifr->ifr_name, sizeof (ifreq.ifr_name)); @@ -1022,7 +1022,7 @@ foreach_localaddr (/*@null@*/ void *data, /*@=moduncon@*/ if (pass2fn) { - for (i = 0; i < n; i+= ifreq_size(*ifr) ) { + for (i = 0; i + sizeof(struct ifreq) <= n; i+= ifreq_size(*ifr) ) { ifr = (struct ifreq *)((caddr_t) buf+i); if (ifr->ifr_name[0] == '\0') @@ -1074,9 +1074,12 @@ static int print_addr (/*@unused@*/ void *dataptr, struct sockaddr *sa) len = socklen (sa); err = getnameinfo (sa, len, hostbuf, (socklen_t) sizeof (hostbuf), (char *) NULL, 0, NI_NUMERICHOST); - if (err) + if (err) { + int e = errno; printf ("<getnameinfo error %d: %s>\n", err, gai_strerror (err)); - else + if (err == EAI_SYSTEM) + printf ("\t\t<errno is %d: %s>\n", e, strerror(e)); + } else printf ("addr %s\n", hostbuf); return 0; } |