Merge "Test for ns_parserr() and got a heap-buffer-overflow"
diff --git a/libc/dns/nameser/ns_name.c b/libc/dns/nameser/ns_name.c
index 3a202c1..c2dc80f 100644
--- a/libc/dns/nameser/ns_name.c
+++ b/libc/dns/nameser/ns_name.c
@@ -692,7 +692,7 @@
{
const u_char *cp;
u_int n;
- int l;
+ int l=0;
cp = *ptrptr;
while (cp < eom && (n = *cp++) != 0) {
@@ -702,7 +702,7 @@
cp += n;
continue;
case NS_TYPE_ELT: /* EDNS0 extended label */
- if ((l = labellen(cp - 1)) < 0) {
+ if (cp < eom && (l = labellen(cp - 1)) < 0) {
errno = EMSGSIZE; /* XXX */
return(-1);
}