summaryrefslogtreecommitdiff
path: root/src/lib/libc/net/gethostnamadr.c
diff options
context:
space:
mode:
authorderaadt <>2002-05-22 04:31:14 +0000
committerderaadt <>2002-05-22 04:31:14 +0000
commit4bb76773d7dd0051cb98a137db9aeefb61518f5a (patch)
treeabd44c5b948cca470ede658e465fb04654998464 /src/lib/libc/net/gethostnamadr.c
parent7ebf0f8371844decf17c65829147760ed09339a6 (diff)
downloadopenbsd-4bb76773d7dd0051cb98a137db9aeefb61518f5a.tar.gz
openbsd-4bb76773d7dd0051cb98a137db9aeefb61518f5a.tar.bz2
openbsd-4bb76773d7dd0051cb98a137db9aeefb61518f5a.zip
more strlcpy and snprintf
Diffstat (limited to 'src/lib/libc/net/gethostnamadr.c')
-rw-r--r--src/lib/libc/net/gethostnamadr.c68
1 files changed, 31 insertions, 37 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)
55static char rcsid[] = "$OpenBSD: gethostnamadr.c,v 1.46 2002/05/18 00:06:42 itojun Exp $"; 55static 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