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);