diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/network/dn_skipname.c | 7 | 
1 files changed, 5 insertions, 2 deletions
diff --git a/src/network/dn_skipname.c b/src/network/dn_skipname.c index d54c2e5d..eba65bb8 100644 --- a/src/network/dn_skipname.c +++ b/src/network/dn_skipname.c @@ -2,11 +2,14 @@  int dn_skipname(const unsigned char *s, const unsigned char *end)  { -	const unsigned char *p; -	for (p=s; p<end; p++) +	const unsigned char *p = s; +	while (p < end)  		if (!*p) return p-s+1;  		else if (*p>=192)  			if (p+1<end) return p-s+2;  			else break; +		else +			if (end-p<*p+1) break; +			else p += *p + 1;  	return -1;  }  | 
