Synopsis: NIS hostname buffer overrun.
NetBSD versions: All
Thanks to: Itojun
Reported in NetBSD Security Advisory: SA2000-012
--- lib/libc/net/gethnamaddr.c 2000/07/07 11:03:38 1.35
+++ lib/libc/net/gethnamaddr.c 2000/07/30 05:44:36 1.36
@@ -1272,14 +1272,14 @@
* XXX: maybe support IPv6 parsing, based on 'af' setting
*/
nextline:
+ /* check for host_addrs overflow */
+ if (buf >= &host_addrs[sizeof(host_addrs) / sizeof(host_addrs[0])])
+ goto done;
+
more = 0;
cp = strpbrk(p, " \t");
- if (cp == NULL) {
- if (host.h_name == NULL)
- return (NULL);
- else
- goto done;
- }
+ if (cp == NULL)
+ goto done;
*cp++ = '\0';
*hap++ = (char *)(void *)buf;
@@ -1320,6 +1320,8 @@
*cp++ = '\0';
}
done:
+ if (host.h_name == NULL)
+ return (NULL);
*q = NULL;
*hap = NULL;
return (&host);