aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNIIBE Yutaka <[email protected]>2018-06-18 01:13:35 +0000
committerNIIBE Yutaka <[email protected]>2018-06-18 01:13:35 +0000
commita4a054bf14fa855715faee01a152755c4e2a74f7 (patch)
tree36b0a232195f6dcaee09c12d4da999a822ea875a
parentlibdns: Fix connect and try next nameserver when ECONNREFUSED. (diff)
downloadgnupg-a4a054bf14fa855715faee01a152755c4e2a74f7.tar.gz
gnupg-a4a054bf14fa855715faee01a152755c4e2a74f7.zip
libdns: Fix for non-FQDN hostname.
* dirmngr/dns.c (dns_resconf_open): Clear search[0] for non-FQDN hostname. -- GnuPG-bug-id: T3803 Signed-off-by: NIIBE Yutaka <[email protected]>
-rw-r--r--dirmngr/dns.c13
1 files changed, 8 insertions, 5 deletions
diff --git a/dirmngr/dns.c b/dirmngr/dns.c
index d2445a0c6..908bf157a 100644
--- a/dirmngr/dns.c
+++ b/dirmngr/dns.c
@@ -5371,13 +5371,16 @@ struct dns_resolv_conf *dns_resconf_open(int *error) {
if (0 != gethostname(resconf->search[0], sizeof resconf->search[0]))
goto syerr;
- dns_d_anchor(resconf->search[0], sizeof resconf->search[0], resconf->search[0], strlen(resconf->search[0]));
- dns_d_cleave(resconf->search[0], sizeof resconf->search[0], resconf->search[0], strlen(resconf->search[0]));
-
/*
- * XXX: If gethostname() returned a string without any label
- * separator, then search[0][0] should be NUL.
+ * If gethostname() returned a string without any label
+ * separator, then search[0][0] should be NUL.
*/
+ if (strchr (resconf->search[0], '.')) {
+ dns_d_anchor(resconf->search[0], sizeof resconf->search[0], resconf->search[0], strlen(resconf->search[0]));
+ dns_d_cleave(resconf->search[0], sizeof resconf->search[0], resconf->search[0], strlen(resconf->search[0]));
+ } else {
+ memset (resconf->search[0], 0, sizeof resconf->search[0]);
+ }
dns_resconf_acquire(resconf);