diff options
author | Werner Koch <[email protected]> | 2017-01-02 09:00:33 +0000 |
---|---|---|
committer | Werner Koch <[email protected]> | 2017-01-02 09:01:58 +0000 |
commit | b200e636ab20d2aa93d9f71f3789db5a04af0a56 (patch) | |
tree | bb6a6aef59ccc7d34eb0df3c065fb4919447c933 /dirmngr/dns-stuff.c | |
parent | scd: Fix select_application. (diff) | |
download | gnupg-b200e636ab20d2aa93d9f71f3789db5a04af0a56.tar.gz gnupg-b200e636ab20d2aa93d9f71f3789db5a04af0a56.zip |
dirmngr: Strip root zone suffix from libdns cname results.
* dirmngr/dns-stuff.c (resolve_name_libdns): Strip trailing dot.
(get_dns_cname_libdns): Ditto.
--
Signed-off-by: Werner Koch <[email protected]>
Diffstat (limited to 'dirmngr/dns-stuff.c')
-rw-r--r-- | dirmngr/dns-stuff.c | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/dirmngr/dns-stuff.c b/dirmngr/dns-stuff.c index a31b0731c..f2e1df925 100644 --- a/dirmngr/dns-stuff.c +++ b/dirmngr/dns-stuff.c @@ -732,6 +732,10 @@ resolve_name_libdns (const char *name, unsigned short port, err = gpg_error_from_syserror (); goto leave; } + /* Libdns appends the root zone part which is problematic + * for most other functions - strip it. */ + if (**r_canonname && (*r_canonname)[strlen (*r_canonname)-1] == '.') + (*r_canonname)[strlen (*r_canonname)-1] = 0; } dai = xtrymalloc (sizeof *dai + ent->ai_addrlen -1); @@ -1899,6 +1903,13 @@ get_dns_cname_libdns (const char *name, char **r_cname) *r_cname = xtrystrdup (cname.host); if (!*r_cname) err = gpg_error_from_syserror (); + else + { + /* Libdns appends the root zone part which is problematic + * for most other functions - strip it. */ + if (**r_cname && (*r_cname)[strlen (*r_cname)-1] == '.') + (*r_cname)[strlen (*r_cname)-1] = 0; + } leave: dns_free (ans); |