diff options
author | Alexandre Oliva <aoliva@redhat.com> | 2014-11-09 13:51:09 -0200 |
---|---|---|
committer | Alexandre Oliva <aoliva@redhat.com> | 2014-11-21 03:39:37 -0200 |
commit | f3d945d5f2b9d7d44032c461af588c6d54f5664b (patch) | |
tree | 6e365e94f4ef21ee5d608a5027d9daaa3d7c8af6 /resolv | |
parent | 4969890247d7d6a548f17641ed5a18f4b713d211 (diff) | |
download | glibc-f3d945d5f2b9d7d44032c461af588c6d54f5664b.tar glibc-f3d945d5f2b9d7d44032c461af588c6d54f5664b.tar.gz glibc-f3d945d5f2b9d7d44032c461af588c6d54f5664b.tar.bz2 glibc-f3d945d5f2b9d7d44032c461af588c6d54f5664b.zip |
BZ#16469: don't drop trailing dot in res_nquerydomain(..., name, NULL, ...)
If we drop it here, we will fail to detect a duplicate trailing dot
later on. Retaining, OTOH, has no ill effects whatsoever, and it even
saves us the trouble of copying the domain name minus the trailing
dot, like we used to do.
for ChangeLog
[BZ #16469]
* NEWS: Update.
* resolv/res_query.c (__libc_res_nquerydomain): Retain
trailing dot.
* posix/tst-getaddrinfo5.c: New.
* posix/Makefile (tests): Add it.
Diffstat (limited to 'resolv')
-rw-r--r-- | resolv/res_query.c | 13 |
1 files changed, 2 insertions, 11 deletions
diff --git a/resolv/res_query.c b/resolv/res_query.c index e4ee2a6005..33eeeb70da 100644 --- a/resolv/res_query.c +++ b/resolv/res_query.c @@ -535,8 +535,7 @@ res_nsearch(res_state statp, libresolv_hidden_def (res_nsearch) /* - * Perform a call on res_query on the concatenation of name and domain, - * removing a trailing dot from name if domain is NULL. + * Perform a call on res_query on the concatenation of name and domain. */ static int __libc_res_nquerydomain(res_state statp, @@ -561,10 +560,6 @@ __libc_res_nquerydomain(res_state statp, name, domain?domain:"<Nil>", class, type); #endif if (domain == NULL) { - /* - * Check for trailing '.'; - * copy without '.' if present. - */ n = strlen(name); /* Decrement N prior to checking it against MAXDNAME @@ -575,11 +570,7 @@ __libc_res_nquerydomain(res_state statp, RES_SET_H_ERRNO(statp, NO_RECOVERY); return (-1); } - if (name[n] == '.') { - strncpy(nbuf, name, n); - nbuf[n] = '\0'; - } else - longname = name; + longname = name; } else { n = strlen(name); d = strlen(domain); |