Date: Thu, 7 Sep 2000 11:39:32 -0400 (EDT) From: ak03@gte.com To: FreeBSD-gnats-submit@freebsd.org Subject: bin/21092: Resolver errors are not reported properly in NIS-only case Message-ID: <200009071539.e87FdWd07360@h132-197-97-45.gte.com>
next in thread | raw e-mail | index | archive | help
>Number: 21092 >Category: bin >Synopsis: _gethostbynis function does not set h_errno on failure >Confidential: no >Severity: non-critical >Priority: low >Responsible: freebsd-bugs >State: open >Quarter: >Keywords: >Date-Required: >Class: sw-bug >Submitter-Id: current-users >Arrival-Date: Thu Sep 07 08:40:00 PDT 2000 >Closed-Date: >Last-Modified: >Originator: Alexander Kabaev >Release: FreeBSD 5.0-CURRENT i386 >Organization: Verizon Laboratories Inc. >Environment: FreeBSD kanpc.gte.com 5.0-CURRENT FreeBSD 5.0-CURRENT #0: Wed Sep 6 12:19:50 EDT 2000 root@kanpc.gte.com:/usr/src/sys/compile/KANPC i386 >Description: If NIS is selected as the only source used for the name resolution in host.conf or in nsswitch.conf on newer -CURRENT and then name resolution attempted for an unknown hostname using gethostbyname* functions, h_error is not getting set correctly when resolution fails. It seems like _gethostbynis function fails to set h_errno variable to the appropriate value when returning. All other functions in the family, i.e. _gethostbydns and _gethostbyht, do so. Without attached patch, the following command returns with strange message: [ak03@kanpc ~]$ ping sjkjss ping: cannot resolve sjkjss: Resolver Error 0 (no error) With patch applied, ping produces more reasonable output: [ak03@kanpc ~]$ ping sjkjss ping: cannot resolve sjkjss: Unknown host >How-To-Repeat: Comment out non-nis entries in host.conf or nsswitch.conf and try to ping some unknown host. Index: gethostbynis.c =================================================================== RCS file: /usr/ncvs/src/lib/libc/net/gethostbynis.c,v retrieving revision 1.10 diff -u -r1.10 gethostbynis.c --- gethostbynis.c 1999/08/28 00:00:06 1.10 +++ gethostbynis.c 2000/09/07 15:12:50 @@ -76,15 +76,20 @@ case AF_INET6: size = NS_IN6ADDRSZ; errno = EAFNOSUPPORT; + h_errno = NETDB_INTERNAL; return NULL; } if (domain == (char *)NULL) - if (yp_get_default_domain (&domain)) + if (yp_get_default_domain (&domain)) { + h_errno = NETDB_INTERNAL; return ((struct hostent *)NULL); + } - if (yp_match(domain, map, name, strlen(name), &result, &resultlen)) + if (yp_match(domain, map, name, strlen(name), &result, &resultlen)) { + h_errno = HOST_NOT_FOUND; return ((struct hostent *)NULL); + } /* avoid potential memory leak */ bcopy((char *)result, (char *)&ypbuf, resultlen); >Fix: >Release-Note: >Audit-Trail: >Unformatted: To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-bugs" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200009071539.e87FdWd07360>