diff options
author | Phil Pennock <[email protected]> | 2017-01-19 06:21:42 +0000 |
---|---|---|
committer | Werner Koch <[email protected]> | 2017-01-23 10:02:41 +0000 |
commit | 88ade475c56ac3712d6bd6d41ae38e1421dcb320 (patch) | |
tree | b0f367477c0c6686d393f07e8ebb478ecc7c4189 /dirmngr/dns-stuff.c | |
parent | dco: Register Phil Pennock. (diff) | |
download | gnupg-88ade475c56ac3712d6bd6d41ae38e1421dcb320.tar.gz gnupg-88ade475c56ac3712d6bd6d41ae38e1421dcb320.zip |
dirmngr: Handle missing nsswitch.conf.
* dirmngr/dns-stuff.c (libdns_init): Fallback to files,dns.
--
Signed-off-by: Phil Pennock <[email protected]>
ChangeLog entry by wk.
This fixed the problem:
Short version: macOS doesn't include /etc/nsswitch.conf and GnuPG's
dirmngr is hard-erroring when that file is missing, such that no DNS
operations succeed and --recv-key returns ENOENT type errors to the
caller.
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, 10 insertions, 1 deletions
diff --git a/dirmngr/dns-stuff.c b/dirmngr/dns-stuff.c index 28ecb1857..eae888bf9 100644 --- a/dirmngr/dns-stuff.c +++ b/dirmngr/dns-stuff.c @@ -478,7 +478,16 @@ libdns_init (void) if (err) { log_error ("failed to load '%s': %s\n", fname, gpg_strerror (err)); - goto leave; + /* not fatal, nsswitch.conf is not used on all systems; assume + * classic behavior instead. Our dns library states "bf" which tries + * DNS then Files, which is not classic; FreeBSD + * /usr/src/lib/libc/net/gethostnamadr.c defines default_src[] which + * is Files then DNS, which is. */ + log_debug ("dns: fallback resolution order, files then DNS"); + ld.resolv_conf->lookup[0] = 'f'; + ld.resolv_conf->lookup[1] = 'b'; + ld.resolv_conf->lookup[2] = '\0'; + err = GPG_ERR_NO_ERROR; } #endif /* Unix */ |