[tor-commits] [tor/master] finalised fix on libevent open string issue

nickm at torproject.org nickm at torproject.org
Fri Sep 13 16:31:55 UTC 2013


commit a9910d89f170933a7730798c98ebbb1d743a1c46
Author: Cristian Toader <cristian.matei.toader at gmail.com>
Date:   Mon Aug 19 11:41:46 2013 +0300

    finalised fix on libevent open string issue
---
 src/common/sandbox.c |    9 ---------
 src/or/dns.c         |   12 +++++++++---
 2 files changed, 9 insertions(+), 12 deletions(-)

diff --git a/src/common/sandbox.c b/src/common/sandbox.c
index c5e1231..210aa7c 100644
--- a/src/common/sandbox.c
+++ b/src/common/sandbox.c
@@ -261,15 +261,6 @@ sb_open(scmp_filter_ctx ctx, sandbox_cfg_t *filter)
     }
   }
 
-  // todo remove when libevent fix
-  rc = seccomp_rule_add(ctx, SCMP_ACT_ALLOW, SCMP_SYS(open), 1,
-        SCMP_CMP(1, SCMP_CMP_EQ, O_RDONLY|O_LARGEFILE|O_CLOEXEC));
-  if (rc != 0) {
-    log_err(LD_BUG,"(Sandbox) failed to add open syscall, received libseccomp "
-        "error %d", rc);
-    return rc;
-  }
-
   // problem: required by getaddrinfo
   rc = seccomp_rule_add(ctx, SCMP_ACT_ALLOW, SCMP_SYS(open), 1,
         SCMP_CMP(1, SCMP_CMP_EQ, O_RDONLY|O_CLOEXEC));
diff --git a/src/or/dns.c b/src/or/dns.c
index 6dc0c05..09601e9 100644
--- a/src/or/dns.c
+++ b/src/or/dns.c
@@ -1444,13 +1444,14 @@ configure_nameservers(int force)
   const or_options_t *options;
   const char *conf_fname;
   struct stat st;
-  int r;
+  int r, flags;
   options = get_options();
   conf_fname = options->ServerDNSResolvConfFile;
 #ifndef _WIN32
   if (!conf_fname)
     conf_fname = "/etc/resolv.conf";
 #endif
+  flags = DNS_OPTIONS_ALL;
 
   if (!the_evdns_base) {
     if (!(the_evdns_base = evdns_base_new(tor_libevent_get_base(), 0))) {
@@ -1492,9 +1493,14 @@ configure_nameservers(int force)
       evdns_base_search_clear(the_evdns_base);
       evdns_base_clear_nameservers_and_suspend(the_evdns_base);
     }
+    if (flags & DNS_OPTION_HOSTSFILE) {
+      flags ^= DNS_OPTION_HOSTSFILE;
+      evdns_base_load_hosts(the_evdns_base,
+          sandbox_intern_string("/etc/resolv.conf"));
+    }
     log_info(LD_EXIT, "Parsing resolver configuration in '%s'", conf_fname);
-    if ((r = evdns_base_resolv_conf_parse(the_evdns_base,
-                                          DNS_OPTIONS_ALL, conf_fname))) {
+    if ((r = evdns_base_resolv_conf_parse(the_evdns_base, flags,
+        sandbox_intern_string(conf_fname)))) {
       log_warn(LD_EXIT, "Unable to parse '%s', or no nameservers in '%s' (%d)",
                conf_fname, conf_fname, r);
       goto err;





More information about the tor-commits mailing list