diff options
author | deraadt <> | 2002-05-22 04:31:14 +0000 |
---|---|---|
committer | deraadt <> | 2002-05-22 04:31:14 +0000 |
commit | 4bb76773d7dd0051cb98a137db9aeefb61518f5a (patch) | |
tree | abd44c5b948cca470ede658e465fb04654998464 /src | |
parent | 7ebf0f8371844decf17c65829147760ed09339a6 (diff) | |
download | openbsd-4bb76773d7dd0051cb98a137db9aeefb61518f5a.tar.gz openbsd-4bb76773d7dd0051cb98a137db9aeefb61518f5a.tar.bz2 openbsd-4bb76773d7dd0051cb98a137db9aeefb61518f5a.zip |
more strlcpy and snprintf
Diffstat (limited to 'src')
-rw-r--r-- | src/lib/libc/net/gethostnamadr.c | 68 | ||||
-rw-r--r-- | src/lib/libc/net/getnameinfo.c | 14 | ||||
-rw-r--r-- | 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 @@ | |||
52 | */ | 52 | */ |
53 | 53 | ||
54 | #if defined(LIBC_SCCS) && !defined(lint) | 54 | #if defined(LIBC_SCCS) && !defined(lint) |
55 | static char rcsid[] = "$OpenBSD: gethostnamadr.c,v 1.46 2002/05/18 00:06:42 itojun Exp $"; | 55 | static char rcsid[] = "$OpenBSD: gethostnamadr.c,v 1.47 2002/05/22 04:31:14 deraadt Exp $"; |
56 | #endif /* LIBC_SCCS and not lint */ | 56 | #endif /* LIBC_SCCS and not lint */ |
57 | 57 | ||
58 | #include <sys/param.h> | 58 | #include <sys/param.h> |
@@ -712,18 +712,15 @@ gethostbyaddr(addr, len, af) | |||
712 | } | 712 | } |
713 | switch (af) { | 713 | switch (af) { |
714 | case AF_INET: | 714 | case AF_INET: |
715 | (void) sprintf(qbuf, "%u.%u.%u.%u.in-addr.arpa", | 715 | (void) snprintf(qbuf, sizeof qbuf, "%u.%u.%u.%u.in-addr.arpa", |
716 | (uaddr[3] & 0xff), | 716 | (uaddr[3] & 0xff), (uaddr[2] & 0xff), |
717 | (uaddr[2] & 0xff), | 717 | (uaddr[1] & 0xff), (uaddr[0] & 0xff)); |
718 | (uaddr[1] & 0xff), | ||
719 | (uaddr[0] & 0xff)); | ||
720 | break; | 718 | break; |
721 | case AF_INET6: | 719 | case AF_INET6: |
722 | qp = qbuf; | 720 | qp = qbuf; |
723 | for (n = IN6ADDRSZ - 1; n >= 0; n--) { | 721 | for (n = IN6ADDRSZ - 1; n >= 0; n--) { |
724 | qp += sprintf(qp, "%x.%x.", | 722 | qp += sprintf(qp, "%x.%x.", |
725 | uaddr[n] & 0xf, | 723 | uaddr[n] & 0xf, (uaddr[n] >> 4) & 0xf); |
726 | (uaddr[n] >> 4) & 0xf); | ||
727 | } | 724 | } |
728 | strcpy(qp, "ip6.int"); | 725 | strcpy(qp, "ip6.int"); |
729 | break; | 726 | break; |
@@ -1025,11 +1022,9 @@ _yp_gethtbyaddr(addr) | |||
1025 | if (_yp_check(&__ypdomain) == 0) | 1022 | if (_yp_check(&__ypdomain) == 0) |
1026 | return (hp); | 1023 | return (hp); |
1027 | } | 1024 | } |
1028 | sprintf(name, "%u.%u.%u.%u", | 1025 | snprintf(name, sizeof name, "%u.%u.%u.%u", |
1029 | ((unsigned)addr[0] & 0xff), | 1026 | ((unsigned)addr[0] & 0xff), ((unsigned)addr[1] & 0xff), |
1030 | ((unsigned)addr[1] & 0xff), | 1027 | ((unsigned)addr[2] & 0xff), ((unsigned)addr[3] & 0xff)); |
1031 | ((unsigned)addr[2] & 0xff), | ||
1032 | ((unsigned)addr[3] & 0xff)); | ||
1033 | if (__ypcurrent) | 1028 | if (__ypcurrent) |
1034 | free(__ypcurrent); | 1029 | free(__ypcurrent); |
1035 | __ypcurrent = NULL; | 1030 | __ypcurrent = NULL; |
@@ -1137,34 +1132,33 @@ addrsort(ap, num) | |||
1137 | 1132 | ||
1138 | p = ap; | 1133 | p = ap; |
1139 | for (i = 0; i < num; i++, p++) { | 1134 | for (i = 0; i < num; i++, p++) { |
1140 | for (j = 0 ; (unsigned)j < _res.nsort; j++) | 1135 | for (j = 0 ; (unsigned)j < _res.nsort; j++) |
1141 | if (_res.sort_list[j].addr.s_addr == | 1136 | if (_res.sort_list[j].addr.s_addr == |
1142 | (((struct in_addr *)(*p))->s_addr & _res.sort_list[j].mask)) | 1137 | (((struct in_addr *)(*p))->s_addr & _res.sort_list[j].mask)) |
1143 | break; | 1138 | break; |
1144 | aval[i] = j; | 1139 | aval[i] = j; |
1145 | if (needsort == 0 && i > 0 && j < aval[i-1]) | 1140 | if (needsort == 0 && i > 0 && j < aval[i-1]) |
1146 | needsort = i; | 1141 | needsort = i; |
1147 | } | 1142 | } |
1148 | if (!needsort) | 1143 | if (!needsort) |
1149 | return; | 1144 | return; |
1150 | 1145 | ||
1151 | while (needsort < num) { | 1146 | while (needsort < num) { |
1152 | for (j = needsort - 1; j >= 0; j--) { | 1147 | for (j = needsort - 1; j >= 0; j--) { |
1153 | if (aval[j] > aval[j+1]) { | 1148 | if (aval[j] > aval[j+1]) { |
1154 | char *hp; | 1149 | char *hp; |
1155 | 1150 | ||
1156 | i = aval[j]; | 1151 | i = aval[j]; |
1157 | aval[j] = aval[j+1]; | 1152 | aval[j] = aval[j+1]; |
1158 | aval[j+1] = i; | 1153 | aval[j+1] = i; |
1159 | 1154 | ||
1160 | hp = ap[j]; | 1155 | hp = ap[j]; |
1161 | ap[j] = ap[j+1]; | 1156 | ap[j] = ap[j+1]; |
1162 | ap[j+1] = hp; | 1157 | ap[j+1] = hp; |
1163 | 1158 | } else | |
1164 | } else | 1159 | break; |
1165 | break; | 1160 | } |
1166 | } | 1161 | needsort++; |
1167 | needsort++; | ||
1168 | } | 1162 | } |
1169 | } | 1163 | } |
1170 | #endif | 1164 | #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 @@ | |||
1 | /* $OpenBSD: getnameinfo.c,v 1.23 2002/02/17 19:42:23 millert Exp $ */ | 1 | /* $OpenBSD: getnameinfo.c,v 1.24 2002/05/22 04:31:14 deraadt Exp $ */ |
2 | /* $KAME: getnameinfo.c,v 1.45 2000/09/25 22:43:56 itojun Exp $ */ | 2 | /* $KAME: getnameinfo.c,v 1.45 2000/09/25 22:43:56 itojun Exp $ */ |
3 | 3 | ||
4 | /* | 4 | /* |
@@ -141,17 +141,17 @@ getnameinfo(sa, salen, host, hostlen, serv, servlen, flags) | |||
141 | sp = NULL; | 141 | sp = NULL; |
142 | else { | 142 | else { |
143 | sp = getservbyport(port, | 143 | sp = getservbyport(port, |
144 | (flags & NI_DGRAM) ? "udp" : "tcp"); | 144 | (flags & NI_DGRAM) ? "udp" : "tcp"); |
145 | } | 145 | } |
146 | if (sp) { | 146 | if (sp) { |
147 | if (strlen(sp->s_name) + 1 > servlen) | 147 | if (strlen(sp->s_name) + 1 > servlen) |
148 | return EAI_MEMORY; | 148 | return EAI_MEMORY; |
149 | strcpy(serv, sp->s_name); | 149 | strlcpy(serv, sp->s_name, servlen); |
150 | } else { | 150 | } else { |
151 | snprintf(numserv, sizeof(numserv), "%d", ntohs(port)); | 151 | snprintf(numserv, sizeof(numserv), "%d", ntohs(port)); |
152 | if (strlen(numserv) + 1 > servlen) | 152 | if (strlen(numserv) + 1 > servlen) |
153 | return EAI_MEMORY; | 153 | return EAI_MEMORY; |
154 | strcpy(serv, numserv); | 154 | strlcpy(serv, numserv, servlen); |
155 | } | 155 | } |
156 | } | 156 | } |
157 | 157 | ||
@@ -224,7 +224,7 @@ getnameinfo(sa, salen, host, hostlen, serv, servlen, flags) | |||
224 | numaddrlen = strlen(numaddr); | 224 | numaddrlen = strlen(numaddr); |
225 | if (numaddrlen + 1 > hostlen) /* don't forget terminator */ | 225 | if (numaddrlen + 1 > hostlen) /* don't forget terminator */ |
226 | return EAI_MEMORY; | 226 | return EAI_MEMORY; |
227 | strcpy(host, numaddr); | 227 | strlcpy(host, numaddr, hostlen); |
228 | break; | 228 | break; |
229 | } | 229 | } |
230 | } else { | 230 | } else { |
@@ -247,7 +247,7 @@ getnameinfo(sa, salen, host, hostlen, serv, servlen, flags) | |||
247 | if (strlen(hp->h_name) + 1 > hostlen) { | 247 | if (strlen(hp->h_name) + 1 > hostlen) { |
248 | return EAI_MEMORY; | 248 | return EAI_MEMORY; |
249 | } | 249 | } |
250 | strcpy(host, hp->h_name); | 250 | strlcpy(host, hp->h_name, hostlen); |
251 | } else { | 251 | } else { |
252 | if (flags & NI_NAMEREQD) | 252 | if (flags & NI_NAMEREQD) |
253 | return EAI_NONAME; | 253 | return EAI_NONAME; |
@@ -293,7 +293,7 @@ ip6_parsenumeric(sa, addr, host, hostlen, flags) | |||
293 | numaddrlen = strlen(numaddr); | 293 | numaddrlen = strlen(numaddr); |
294 | if (numaddrlen + 1 > hostlen) /* don't forget terminator */ | 294 | if (numaddrlen + 1 > hostlen) /* don't forget terminator */ |
295 | return EAI_MEMORY; | 295 | return EAI_MEMORY; |
296 | strcpy(host, numaddr); | 296 | strlcpy(host, numaddr, hostlen); |
297 | 297 | ||
298 | if (((const struct sockaddr_in6 *)sa)->sin6_scope_id) { | 298 | if (((const struct sockaddr_in6 *)sa)->sin6_scope_id) { |
299 | char zonebuf[MAXHOSTNAMELEN]; | 299 | 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 @@ | |||
34 | */ | 34 | */ |
35 | 35 | ||
36 | #if defined(LIBC_SCCS) && !defined(lint) | 36 | #if defined(LIBC_SCCS) && !defined(lint) |
37 | static char *rcsid = "$OpenBSD: rcmd.c,v 1.41 2002/02/17 19:42:23 millert Exp $"; | 37 | static char *rcsid = "$OpenBSD: rcmd.c,v 1.42 2002/05/22 04:31:14 deraadt Exp $"; |
38 | #endif /* LIBC_SCCS and not lint */ | 38 | #endif /* LIBC_SCCS and not lint */ |
39 | 39 | ||
40 | #include <sys/param.h> | 40 | #include <sys/param.h> |
@@ -175,7 +175,7 @@ rcmd_af(ahost, rport, locuser, remuser, cmd, fd2p, af) | |||
175 | hbuf[0] = '\0'; | 175 | hbuf[0] = '\0'; |
176 | if (getnameinfo(r->ai_addr, r->ai_addrlen, | 176 | if (getnameinfo(r->ai_addr, r->ai_addrlen, |
177 | hbuf, sizeof(hbuf), NULL, 0, niflags) != 0) | 177 | hbuf, sizeof(hbuf), NULL, 0, niflags) != 0) |
178 | strcpy(hbuf, "(invalid)"); | 178 | strlcpy(hbuf, "(invalid)", sizeof hbuf); |
179 | (void)fprintf(stderr, "connect to address %s: ", hbuf); | 179 | (void)fprintf(stderr, "connect to address %s: ", hbuf); |
180 | errno = oerrno; | 180 | errno = oerrno; |
181 | perror(0); | 181 | perror(0); |
@@ -183,7 +183,7 @@ rcmd_af(ahost, rport, locuser, remuser, cmd, fd2p, af) | |||
183 | hbuf[0] = '\0'; | 183 | hbuf[0] = '\0'; |
184 | if (getnameinfo(r->ai_addr, r->ai_addrlen, | 184 | if (getnameinfo(r->ai_addr, r->ai_addrlen, |
185 | hbuf, sizeof(hbuf), NULL, 0, niflags) != 0) | 185 | hbuf, sizeof(hbuf), NULL, 0, niflags) != 0) |
186 | strcpy(hbuf, "(invalid)"); | 186 | strlcpy(hbuf, "(invalid)", sizeof hbuf); |
187 | (void)fprintf(stderr, "Trying %s...\n", hbuf); | 187 | (void)fprintf(stderr, "Trying %s...\n", hbuf); |
188 | continue; | 188 | continue; |
189 | } | 189 | } |