1 From: Werner Koch <wk@gnupg.org>
2 Date: Mon, 2 Jan 2017 10:00:33 +0100
3 Subject: dirmngr: Strip root zone suffix from libdns cname results.
5 * dirmngr/dns-stuff.c (resolve_name_libdns): Strip trailing dot.
6 (get_dns_cname_libdns): Ditto.
9 Signed-off-by: Werner Koch <wk@gnupg.org>
10 (cherry picked from commit b200e636ab20d2aa93d9f71f3789db5a04af0a56)
12 dirmngr/dns-stuff.c | 11 +++++++++++
13 1 file changed, 11 insertions(+)
15 diff --git a/dirmngr/dns-stuff.c b/dirmngr/dns-stuff.c
16 index a31b0731c..f2e1df925 100644
17 --- a/dirmngr/dns-stuff.c
18 +++ b/dirmngr/dns-stuff.c
19 @@ -732,6 +732,10 @@ resolve_name_libdns (const char *name, unsigned short port,
20 err = gpg_error_from_syserror ();
23 + /* Libdns appends the root zone part which is problematic
24 + * for most other functions - strip it. */
25 + if (**r_canonname && (*r_canonname)[strlen (*r_canonname)-1] == '.')
26 + (*r_canonname)[strlen (*r_canonname)-1] = 0;
29 dai = xtrymalloc (sizeof *dai + ent->ai_addrlen -1);
30 @@ -1899,6 +1903,13 @@ get_dns_cname_libdns (const char *name, char **r_cname)
31 *r_cname = xtrystrdup (cname.host);
33 err = gpg_error_from_syserror ();
36 + /* Libdns appends the root zone part which is problematic
37 + * for most other functions - strip it. */
38 + if (**r_cname && (*r_cname)[strlen (*r_cname)-1] == '.')
39 + (*r_cname)[strlen (*r_cname)-1] = 0;