Date: Fri, 3 Jan 2003 15:41:13 +0100 (CET) From: Hartmut Brandt <brandt@fokus.gmd.de> To: FreeBSD-gnats-submit@FreeBSD.org Subject: sparc64/46729: gethostbyname fails for NIS Message-ID: <200301031441.h03EfD4t003598@catssrv.fokus.gmd.de>
next in thread | raw e-mail | index | archive | help
>Number: 46729 >Category: sparc64 >Synopsis: gethostbyname fails for NIS >Confidential: no >Severity: critical >Priority: high >Responsible: freebsd-sparc >State: open >Quarter: >Keywords: >Date-Required: >Class: sw-bug >Submitter-Id: current-users >Arrival-Date: Fri Jan 03 06:50:01 PST 2003 >Closed-Date: >Last-Modified: >Originator: Hartmut Brandt >Release: FreeBSD 5.0-CURRENT sparc64 >Organization: FhI Fokus >Environment: System: FreeBSD catssrv.fokus.gmd.de 5.0-CURRENT FreeBSD 5.0-CURRENT #20: Fri Jan 3 14:08:11 CET 2003 hbb@catssrv.fokus.gmd.de:/opt/obj/usr/src/sys/CATSSRV sparc64 >Description: /usr/src/lib/libc/net/gethostbynis.c assumes, that an AF_INET address is the same as an u_long. This is abviously false and leads to the effect, that all IP addresses obtained via NIS are 0.0.0.0. >How-To-Repeat: Execute ping host-with-name-via-nis and observe that ping is able to resolve the name, but the printed address is 0.0.0.0. >Fix: Apply the following patch and recompile and install libc: Index: gethostbynis.c =================================================================== RCS file: /usr/ncvs/src/lib/libc/net/gethostbynis.c,v retrieving revision 1.15 diff -c -r1.15 gethostbynis.c *** gethostbynis.c 22 Mar 2002 21:52:29 -0000 1.15 --- gethostbynis.c 3 Jan 2003 14:31:16 -0000 *************** *** 67,72 **** --- 67,73 ---- static struct hostent h; static char *domain = (char *)NULL; static char ypbuf[YPMAXRECORD + 2]; + in_addr_t addr; switch(af) { case AF_INET: *************** *** 104,110 **** *cp++ = '\0'; h.h_addr_list = host_addrs; h.h_addr = hostaddr; ! *((u_long *)h.h_addr) = inet_addr(result); h.h_length = size; h.h_addrtype = AF_INET; while (*cp == ' ' || *cp == '\t') --- 105,112 ---- *cp++ = '\0'; h.h_addr_list = host_addrs; h.h_addr = hostaddr; ! addr = inet_addr(result); ! bcopy((char *)&addr, h.h_addr, size); h.h_length = size; h.h_addrtype = AF_INET; while (*cp == ' ' || *cp == '\t') >Release-Note: >Audit-Trail: >Unformatted: To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-sparc" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200301031441.h03EfD4t003598>