File: 0060-dirmngr-Do-not-assume-that-etc-hosts-exists.patch

package info (click to toggle)
gnupg2 2.1.18-8~deb9u4
  • links: PTS, VCS
  • area: main
  • in suites: stretch
  • size: 46,748 kB
  • sloc: ansic: 222,789; sh: 7,531; lisp: 5,090; makefile: 1,459; awk: 126; sed: 16; python: 16; php: 14; perl: 13
file content (61 lines) | stat: -rw-r--r-- 2,016 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
From: Werner Koch <wk@gnupg.org>
Date: Mon, 3 Apr 2017 19:10:50 +0200
Subject: dirmngr: Do not assume that /etc/hosts exists.

* dirmngr/dns-stuff.c (libdns_init): Do not bail out.
--

A standard Windows installation does not have a hosts file and thus we
can't bail out here.  We should also not bail out on a Unix system
because /etc/hosts is just one method in  nsswitch.conf.

Fixes-commit: 88f1505f0613894d5544290a170119eb538921e5
Signed-off-by: Werner Koch <wk@gnupg.org>
(cherry picked from commit 5d873f288e86edfb684f4dd57ac36466b06494a4)
---
 dirmngr/dns-stuff.c | 16 ++++++++++++----
 1 file changed, 12 insertions(+), 4 deletions(-)

diff --git a/dirmngr/dns-stuff.c b/dirmngr/dns-stuff.c
index c79a9c7f4..c2d5488c1 100644
--- a/dirmngr/dns-stuff.c
+++ b/dirmngr/dns-stuff.c
@@ -538,10 +538,9 @@ libdns_init (void)
       goto leave;
     }
 
-
   {
 #if HAVE_W32_SYSTEM
-    char *hosts_path = xtryasprintf ("%s\System32\drivers\etc\hosts",
+    char *hosts_path = xtryasprintf ("%s\\System32\\drivers\\etc\\hosts",
                                      getenv ("SystemRoot"));
     if (! hosts_path)
       {
@@ -551,15 +550,24 @@ libdns_init (void)
 
     derr = dns_hosts_loadpath (ld.hosts, hosts_path);
     xfree (hosts_path);
+    if (derr)
+      {
+        err = libdns_error_to_gpg_error (derr);
+        /* Most Windows systems don't have a hosts files.  So do not
+         * report in this case.  */
+        if (gpg_err_code (err) != GPG_ERR_ENOENT)
+          log_error ("failed to load hosts file: %s\n", gpg_strerror (err));
+        err = 0; /* Do not bail out.  */
+      }
 #else
     derr = dns_hosts_loadpath (ld.hosts, "/etc/hosts");
-#endif
     if (derr)
       {
         err = libdns_error_to_gpg_error (derr);
         log_error ("failed to load hosts file: %s\n", gpg_strerror (err));
-        goto leave;
+        err = 0; /* Do not bail out - having no /etc/hosts is legal.  */
       }
+#endif
   }
 
   /* dns_hints_local for stub mode, dns_hints_root for recursive.  */