resolv: skip leading dot in domain to search

This should only happen if the domain to search is the root,
represented as . rather than by an empty string.  Skipping it here
prevents libc_res_nquerydomain from duplicating the trailing dot,
which would cause the domain name compression to fail.

for  ChangeLog

	PR 16469
	* resolv/res_query.c (__libc_res_nsearch): Skip leading dot in
	search domain names.
This commit is contained in:
Alexandre Oliva 2014-09-27 07:23:39 -03:00
parent ba878d017e
commit 901aad32ed

View File

@ -413,13 +413,15 @@ __libc_res_nsearch(res_state statp,
for (domain = (const char * const *)statp->dnsrch;
*domain && !done;
domain++) {
const char *dname = domain[0];
searched = 1;
if (domain[0][0] == '\0' ||
(domain[0][0] == '.' && domain[0][1] == '\0'))
if (dname[0] == '.')
dname++;
if (dname[0] == '\0')
root_on_list++;
ret = __libc_res_nquerydomain(statp, name, *domain,
ret = __libc_res_nquerydomain(statp, name, dname,
class, type,
answer, anslen, answerp,
answerp2, nanswerp2,