From 4bb76773d7dd0051cb98a137db9aeefb61518f5a Mon Sep 17 00:00:00 2001 From: deraadt <> Date: Wed, 22 May 2002 04:31:14 +0000 Subject: more strlcpy and snprintf --- src/lib/libc/net/gethostnamadr.c | 68 ++++++++++++++++++---------------------- src/lib/libc/net/getnameinfo.c | 14 ++++----- src/lib/libc/net/rcmd.c | 6 ++-- 3 files changed, 41 insertions(+), 47 deletions(-) diff --git a/src/lib/libc/net/gethostnamadr.c b/src/lib/libc/net/gethostnamadr.c index a0bee88a6d..cdc42c4329 100644 --- a/src/lib/libc/net/gethostnamadr.c +++ b/src/lib/libc/net/gethostnamadr.c @@ -52,7 +52,7 @@ */ #if defined(LIBC_SCCS) && !defined(lint) -static char rcsid[] = "$OpenBSD: gethostnamadr.c,v 1.46 2002/05/18 00:06:42 itojun Exp $"; +static char rcsid[] = "$OpenBSD: gethostnamadr.c,v 1.47 2002/05/22 04:31:14 deraadt Exp $"; #endif /* LIBC_SCCS and not lint */ #include @@ -712,18 +712,15 @@ gethostbyaddr(addr, len, af) } switch (af) { case AF_INET: - (void) sprintf(qbuf, "%u.%u.%u.%u.in-addr.arpa", - (uaddr[3] & 0xff), - (uaddr[2] & 0xff), - (uaddr[1] & 0xff), - (uaddr[0] & 0xff)); + (void) snprintf(qbuf, sizeof qbuf, "%u.%u.%u.%u.in-addr.arpa", + (uaddr[3] & 0xff), (uaddr[2] & 0xff), + (uaddr[1] & 0xff), (uaddr[0] & 0xff)); break; case AF_INET6: qp = qbuf; for (n = IN6ADDRSZ - 1; n >= 0; n--) { qp += sprintf(qp, "%x.%x.", - uaddr[n] & 0xf, - (uaddr[n] >> 4) & 0xf); + uaddr[n] & 0xf, (uaddr[n] >> 4) & 0xf); } strcpy(qp, "ip6.int"); break; @@ -1025,11 +1022,9 @@ _yp_gethtbyaddr(addr) if (_yp_check(&__ypdomain) == 0) return (hp); } - sprintf(name, "%u.%u.%u.%u", - ((unsigned)addr[0] & 0xff), - ((unsigned)addr[1] & 0xff), - ((unsigned)addr[2] & 0xff), - ((unsigned)addr[3] & 0xff)); + snprintf(name, sizeof name, "%u.%u.%u.%u", + ((unsigned)addr[0] & 0xff), ((unsigned)addr[1] & 0xff), + ((unsigned)addr[2] & 0xff), ((unsigned)addr[3] & 0xff)); if (__ypcurrent) free(__ypcurrent); __ypcurrent = NULL; @@ -1137,34 +1132,33 @@ addrsort(ap, num) p = ap; for (i = 0; i < num; i++, p++) { - for (j = 0 ; (unsigned)j < _res.nsort; j++) - if (_res.sort_list[j].addr.s_addr == - (((struct in_addr *)(*p))->s_addr & _res.sort_list[j].mask)) - break; - aval[i] = j; - if (needsort == 0 && i > 0 && j < aval[i-1]) - needsort = i; + for (j = 0 ; (unsigned)j < _res.nsort; j++) + if (_res.sort_list[j].addr.s_addr == + (((struct in_addr *)(*p))->s_addr & _res.sort_list[j].mask)) + break; + aval[i] = j; + if (needsort == 0 && i > 0 && j < aval[i-1]) + needsort = i; } if (!needsort) - return; + return; while (needsort < num) { - for (j = needsort - 1; j >= 0; j--) { - if (aval[j] > aval[j+1]) { - char *hp; - - i = aval[j]; - aval[j] = aval[j+1]; - aval[j+1] = i; - - hp = ap[j]; - ap[j] = ap[j+1]; - ap[j+1] = hp; - - } else - break; - } - needsort++; + for (j = needsort - 1; j >= 0; j--) { + if (aval[j] > aval[j+1]) { + char *hp; + + i = aval[j]; + aval[j] = aval[j+1]; + aval[j+1] = i; + + hp = ap[j]; + ap[j] = ap[j+1]; + ap[j+1] = hp; + } else + break; + } + needsort++; } } #endif diff --git a/src/lib/libc/net/getnameinfo.c b/src/lib/libc/net/getnameinfo.c index 15dc9dcdea..3f37d85d73 100644 --- a/src/lib/libc/net/getnameinfo.c +++ b/src/lib/libc/net/getnameinfo.c @@ -1,4 +1,4 @@ -/* $OpenBSD: getnameinfo.c,v 1.23 2002/02/17 19:42:23 millert Exp $ */ +/* $OpenBSD: getnameinfo.c,v 1.24 2002/05/22 04:31:14 deraadt Exp $ */ /* $KAME: getnameinfo.c,v 1.45 2000/09/25 22:43:56 itojun Exp $ */ /* @@ -141,17 +141,17 @@ getnameinfo(sa, salen, host, hostlen, serv, servlen, flags) sp = NULL; else { sp = getservbyport(port, - (flags & NI_DGRAM) ? "udp" : "tcp"); + (flags & NI_DGRAM) ? "udp" : "tcp"); } if (sp) { if (strlen(sp->s_name) + 1 > servlen) return EAI_MEMORY; - strcpy(serv, sp->s_name); + strlcpy(serv, sp->s_name, servlen); } else { snprintf(numserv, sizeof(numserv), "%d", ntohs(port)); if (strlen(numserv) + 1 > servlen) return EAI_MEMORY; - strcpy(serv, numserv); + strlcpy(serv, numserv, servlen); } } @@ -224,7 +224,7 @@ getnameinfo(sa, salen, host, hostlen, serv, servlen, flags) numaddrlen = strlen(numaddr); if (numaddrlen + 1 > hostlen) /* don't forget terminator */ return EAI_MEMORY; - strcpy(host, numaddr); + strlcpy(host, numaddr, hostlen); break; } } else { @@ -247,7 +247,7 @@ getnameinfo(sa, salen, host, hostlen, serv, servlen, flags) if (strlen(hp->h_name) + 1 > hostlen) { return EAI_MEMORY; } - strcpy(host, hp->h_name); + strlcpy(host, hp->h_name, hostlen); } else { if (flags & NI_NAMEREQD) return EAI_NONAME; @@ -293,7 +293,7 @@ ip6_parsenumeric(sa, addr, host, hostlen, flags) numaddrlen = strlen(numaddr); if (numaddrlen + 1 > hostlen) /* don't forget terminator */ return EAI_MEMORY; - strcpy(host, numaddr); + strlcpy(host, numaddr, hostlen); if (((const struct sockaddr_in6 *)sa)->sin6_scope_id) { char zonebuf[MAXHOSTNAMELEN]; diff --git a/src/lib/libc/net/rcmd.c b/src/lib/libc/net/rcmd.c index 143b667ba8..d6814676f4 100644 --- a/src/lib/libc/net/rcmd.c +++ b/src/lib/libc/net/rcmd.c @@ -34,7 +34,7 @@ */ #if defined(LIBC_SCCS) && !defined(lint) -static char *rcsid = "$OpenBSD: rcmd.c,v 1.41 2002/02/17 19:42:23 millert Exp $"; +static char *rcsid = "$OpenBSD: rcmd.c,v 1.42 2002/05/22 04:31:14 deraadt Exp $"; #endif /* LIBC_SCCS and not lint */ #include @@ -175,7 +175,7 @@ rcmd_af(ahost, rport, locuser, remuser, cmd, fd2p, af) hbuf[0] = '\0'; if (getnameinfo(r->ai_addr, r->ai_addrlen, hbuf, sizeof(hbuf), NULL, 0, niflags) != 0) - strcpy(hbuf, "(invalid)"); + strlcpy(hbuf, "(invalid)", sizeof hbuf); (void)fprintf(stderr, "connect to address %s: ", hbuf); errno = oerrno; perror(0); @@ -183,7 +183,7 @@ rcmd_af(ahost, rport, locuser, remuser, cmd, fd2p, af) hbuf[0] = '\0'; if (getnameinfo(r->ai_addr, r->ai_addrlen, hbuf, sizeof(hbuf), NULL, 0, niflags) != 0) - strcpy(hbuf, "(invalid)"); + strlcpy(hbuf, "(invalid)", sizeof hbuf); (void)fprintf(stderr, "Trying %s...\n", hbuf); continue; } -- cgit v1.2.3-55-g6feb