summaryrefslogtreecommitdiff
path: root/usr.sbin
diff options
context:
space:
mode:
authorJun-ichiro itojun Hagino <itojun@cvs.openbsd.org>2002-06-27 00:26:56 +0000
committerJun-ichiro itojun Hagino <itojun@cvs.openbsd.org>2002-06-27 00:26:56 +0000
commitf531891db5addcaa93e9307284336ed02e9b2244 (patch)
tree0fdba901a99e11c9d6186b07ae965aa3918f6376 /usr.sbin
parentd7763465fa51acddc377e336bcf842ed4bd300c0 (diff)
boundary check in IPv4/v6 mapped address case (affects dig(1)).
from jimpa@tla.se
Diffstat (limited to 'usr.sbin')
-rw-r--r--usr.sbin/named/libresolv/gethnamaddr.c12
1 files changed, 5 insertions, 7 deletions
diff --git a/usr.sbin/named/libresolv/gethnamaddr.c b/usr.sbin/named/libresolv/gethnamaddr.c
index 69a7c03c8d5..a3d9cbe6558 100644
--- a/usr.sbin/named/libresolv/gethnamaddr.c
+++ b/usr.sbin/named/libresolv/gethnamaddr.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: gethnamaddr.c,v 1.5 2002/06/26 06:08:17 itojun Exp $ */
+/* $OpenBSD: gethnamaddr.c,v 1.6 2002/06/27 00:26:55 itojun Exp $ */
/*
* ++Copyright++ 1985, 1988, 1993
@@ -60,7 +60,7 @@
static char sccsid[] = "@(#)gethostnamadr.c 8.1 (Berkeley) 6/4/93";
static char rcsid[] = "$From: gethnamaddr.c,v 8.23 1998/04/07 04:59:46 vixie Exp $";
#else
-static char rcsid[] = "$OpenBSD: gethnamaddr.c,v 1.5 2002/06/26 06:08:17 itojun Exp $";
+static char rcsid[] = "$OpenBSD: gethnamaddr.c,v 1.6 2002/06/27 00:26:55 itojun Exp $";
#endif
#endif /* LIBC_SCCS and not lint */
@@ -881,10 +881,10 @@ map_v4v6_address(src, dst)
}
static void
-map_v4v6_hostent(hp, bpp, lenp)
+map_v4v6_hostent(hp, bpp, ep)
struct hostent *hp;
char **bpp;
- int *lenp;
+ char *ep;
{
char **ap;
@@ -895,17 +895,15 @@ map_v4v6_hostent(hp, bpp, lenp)
for (ap = hp->h_addr_list; *ap; ap++) {
int i = sizeof(align) - ((u_long)*bpp % sizeof(align));
- if (*lenp < (i + IN6ADDRSZ)) {
+ if (ep - *bpp < (i + IN6ADDRSZ)) {
/* Out of memory. Truncate address list here. XXX */
*ap = NULL;
return;
}
*bpp += i;
- *lenp -= i;
map_v4v6_address(*ap, *bpp);
*ap = *bpp;
*bpp += IN6ADDRSZ;
- *lenp -= IN6ADDRSZ;
}
}