From 11e935b72020607e5c3ce85a88209bc34e427a06 Mon Sep 17 00:00:00 2001 From: Pieter Wuille Date: Sat, 7 Mar 2015 04:03:08 -0800 Subject: [PATCH] Avoid circular references --- dns.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/dns.c b/dns.c index 8b01458..6f8b923 100644 --- a/dns.c +++ b/dns.c @@ -83,9 +83,9 @@ int static parse_name(const unsigned char **inpos, const unsigned char *inend, c if (*inpos == inend) return -1; int ref = ((octet - 0xC0) << 8) + *((*inpos)++); - if (ref < 0 || ref >= (*inpos)-inbuf) return -1; + if (ref < 0 || ref >= (*inpos)-inbuf-2) return -1; const unsigned char *newbuf = inbuf + ref; - return parse_name(&newbuf, *inpos, inbuf, buf+bufused, bufsize-bufused); + return parse_name(&newbuf, (*inpos) - 2, inbuf, buf+bufused, bufsize-bufused); } if (octet > 63) return -1; // copy label