From 3951b8e32c209792888f07b4511810e03ac61278 Mon Sep 17 00:00:00 2001 From: Bill Paul Date: Fri, 27 Dec 1996 18:21:07 +0000 Subject: [PATCH] Small yet significant tweaks/cleanups: - getservent: o put _yp_check() proto under #ifdef YP where it belongs o local YP buffers should be YPMAXRECORD + 2 bytes long and should be NUL terminated after copying - gethostbynis: o local YP buffer should be YPMAXRECORD + 2 bytes long - getnetbynis: o local YP buffer should be YPMAXRECORD + 2 bytes long and should be NUL terminated after copying - ether_addr: o local YP buffers should be YPMAXRECORD + 2 bytes long and should be NUL terminated after copying (in this case it's BUFSIZ + 2 bytes, but it happens that BUFSIZ == YPMAXRECORD. - gethostbydns: o nuke stray 'return(NULL)' in __dns_getanswer() (harmless but looks silly) These are 2.2 candidates. I will wait a few days to make sure these don't break anything and then, if there are no objections, move them to the 2.2 branch. --- lib/libc/net/ether_addr.c | 10 ++++++---- lib/libc/net/gethostbydns.c | 3 +-- lib/libc/net/gethostbynis.c | 6 +++--- lib/libc/net/getnetbynis.c | 7 ++++--- lib/libc/net/getservent.c | 6 +++--- 5 files changed, 17 insertions(+), 15 deletions(-) diff --git a/lib/libc/net/ether_addr.c b/lib/libc/net/ether_addr.c index a6f77ab51a6e..f2caeeadf324 100644 --- a/lib/libc/net/ether_addr.c +++ b/lib/libc/net/ether_addr.c @@ -35,7 +35,7 @@ * Center for Telecommunications Research * Columbia University, New York City * - * $Id: ether_addr.c,v 1.5 1996/12/05 18:46:19 jkh Exp $ + * $Id: ether_addr.c,v 1.6 1996/12/10 17:19:09 wollman Exp $ */ @@ -132,7 +132,7 @@ int ether_ntohost(hostname, e) struct ether_addr *e; { FILE *fp; - char buf[BUFSIZ]; + char buf[BUFSIZ + 2]; struct ether_addr local_ether; char local_host[MAXHOSTNAMELEN]; #ifdef YP @@ -157,7 +157,8 @@ int ether_ntohost(hostname, e) continue; } strncpy(buf, result, resultlen); - free(result); + buf[resultlen] = '\0'; + free(result); } #endif if (!ether_line(buf, &local_ether, local_host)) { @@ -183,7 +184,7 @@ int ether_hostton(hostname, e) struct ether_addr *e; { FILE *fp; - char buf[BUFSIZ]; + char buf[BUFSIZ + 2]; struct ether_addr local_ether; char local_host[MAXHOSTNAMELEN]; #ifdef YP @@ -206,6 +207,7 @@ int ether_hostton(hostname, e) continue; } strncpy(buf, result, resultlen); + buf[resultlen] = '\0'; free(result); } #endif diff --git a/lib/libc/net/gethostbydns.c b/lib/libc/net/gethostbydns.c index 415bc4914cfa..2808c9518eed 100644 --- a/lib/libc/net/gethostbydns.c +++ b/lib/libc/net/gethostbydns.c @@ -53,7 +53,7 @@ #if defined(LIBC_SCCS) && !defined(lint) static char sccsid[] = "@(#)gethostnamadr.c 8.1 (Berkeley) 6/4/93"; -static char rcsid[] = "$Id: gethostbydns.c,v 1.13 1996/12/22 22:05:43 wpaul Exp $"; +static char rcsid[] = "$Id: gethostbydns.c,v 1.14 1996/12/24 02:10:24 wpaul Exp $"; #endif /* LIBC_SCCS and not lint */ #include @@ -414,7 +414,6 @@ __dns_getanswer(answer, anslen, qname, qtype) host.h_addrtype = AF_INET; host.h_length = INADDRSZ; break; - return(NULL); } return(gethostanswer((const querybuf *)answer, anslen, qname, qtype)); diff --git a/lib/libc/net/gethostbynis.c b/lib/libc/net/gethostbynis.c index c1f15e6e309a..fa82d502812e 100644 --- a/lib/libc/net/gethostbynis.c +++ b/lib/libc/net/gethostbynis.c @@ -24,8 +24,8 @@ */ #if defined(LIBC_SCCS) && !defined(lint) -static char sccsid[] = "@(#)$Id: gethostbynis.c,v 1.4 1996/08/29 20:07:54 peter Exp $"; -static char rcsid[] = "$Id: gethostbynis.c,v 1.4 1996/08/29 20:07:54 peter Exp $"; +static char sccsid[] = "@(#)$Id: gethostbynis.c,v 1.5 1996/12/24 17:01:49 wpaul Exp $"; +static char rcsid[] = "$Id: gethostbynis.c,v 1.5 1996/12/24 17:01:49 wpaul Exp $"; #endif /* LIBC_SCCS and not lint */ #include @@ -65,7 +65,7 @@ _gethostbynis(name, map, af) int resultlen; static struct hostent h; static char *domain = (char *)NULL; - static char ypbuf[YPMAXRECORD]; + static char ypbuf[YPMAXRECORD + 2]; switch(af) { case AF_INET: diff --git a/lib/libc/net/getnetbynis.c b/lib/libc/net/getnetbynis.c index 44f2066a8adc..55e3600d09d5 100644 --- a/lib/libc/net/getnetbynis.c +++ b/lib/libc/net/getnetbynis.c @@ -24,8 +24,8 @@ */ #if defined(LIBC_SCCS) && !defined(lint) -static char sccsid[] = "@(#)$Id: getnetbynis.c,v 1.6 1996/08/29 20:08:01 peter Exp $"; -static char rcsid[] = "$Id: getnetbynis.c,v 1.6 1996/08/29 20:08:01 peter Exp $"; +static char sccsid[] = "@(#)$Id: getnetbynis.c,v 1.7 1996/12/06 00:12:31 jkh Exp $"; +static char rcsid[] = "$Id: getnetbynis.c,v 1.7 1996/12/06 00:12:31 jkh Exp $"; #endif /* LIBC_SCCS and not lint */ #include @@ -64,7 +64,7 @@ _getnetbynis(name, map, af) int resultlen; static struct netent h; static char *domain = (char *)NULL; - static char ypbuf[YPMAXRECORD]; + static char ypbuf[YPMAXRECORD + 2]; switch(af) { case AF_INET: @@ -83,6 +83,7 @@ _getnetbynis(name, map, af) return (NULL); bcopy((char *)result, (char *)&ypbuf, resultlen); + ypbuf[resultlen] = '\0'; free(result); result = (char *)&ypbuf; diff --git a/lib/libc/net/getservent.c b/lib/libc/net/getservent.c index 78d6df1bdea4..cd4449fbb86f 100644 --- a/lib/libc/net/getservent.c +++ b/lib/libc/net/getservent.c @@ -46,9 +46,9 @@ static char sccsid[] = "@(#)getservent.c 8.1 (Berkeley) 6/4/93"; #include #include static int serv_stepping_yp = 0; +extern int _yp_check __P(( char ** )); #endif -extern int _yp_check __P(( char ** )); #define MAXALIASES 35 @@ -70,7 +70,7 @@ _getservbyport_yp(line) { char *result; int resultlen; - char buf[YPMAXRECORD]; + char buf[YPMAXRECORD + 2]; int rv; snprintf(buf, sizeof(buf), "%d/%s", ntohs(___getservbyport_yp), @@ -116,7 +116,7 @@ _getservbyname_yp(line) { char *result; int resultlen; - char buf[YPMAXRECORD]; + char buf[YPMAXRECORD + 2]; if(!yp_domain) { if(yp_get_default_domain(&yp_domain))