[tor-commits] [tor/master] config: Make parse_outbound_addresses() return failures

nickm at torproject.org nickm at torproject.org
Mon Sep 4 16:50:21 UTC 2017


commit 651629cbdf5ae1af6702d282516bebc124f8742a
Author: David Goulet <dgoulet at torproject.org>
Date:   Thu Aug 31 08:29:09 2017 -0400

    config: Make parse_outbound_addresses() return failures
    
    The function was never returning an error code on failure to parse the
    OutboundAddress* options.
    
    In the process, it was making our test_options_validate__outbound_addresses()
    not test the right thing.
    
    Fixes #23366
    
    Signed-off-by: David Goulet <dgoulet at torproject.org>
---
 changes/bug23366        |  4 ++++
 src/or/config.c         | 27 +++++++++++++++++++++------
 src/test/test_options.c |  2 ++
 3 files changed, 27 insertions(+), 6 deletions(-)

diff --git a/changes/bug23366 b/changes/bug23366
new file mode 100644
index 000000000..85e370f61
--- /dev/null
+++ b/changes/bug23366
@@ -0,0 +1,4 @@
+  o Minor bugfixes (test):
+    - Fix a broken OutboundAddress option unit test because the parsing
+      function was never returning an error on failure. Fixes bug #23366.;
+      bugfix on tor-0.3.0.3-alpha.
diff --git a/src/or/config.c b/src/or/config.c
index 30853724e..ff70a4465 100644
--- a/src/or/config.c
+++ b/src/or/config.c
@@ -7921,13 +7921,28 @@ parse_outbound_addresses(or_options_t *options, int validate_only, char **msg)
     memset(&options->OutboundBindAddresses, 0,
            sizeof(options->OutboundBindAddresses));
   }
-  parse_outbound_address_lines(options->OutboundBindAddress,
-                      OUTBOUND_ADDR_EXIT_AND_OR, options, validate_only, msg);
-  parse_outbound_address_lines(options->OutboundBindAddressOR,
-                      OUTBOUND_ADDR_OR, options, validate_only, msg);
-  parse_outbound_address_lines(options->OutboundBindAddressExit,
-                      OUTBOUND_ADDR_EXIT, options, validate_only, msg);
+
+  if (parse_outbound_address_lines(options->OutboundBindAddress,
+                                   OUTBOUND_ADDR_EXIT_AND_OR, options,
+                                   validate_only, msg) < 0) {
+    goto err;
+  }
+
+  if (parse_outbound_address_lines(options->OutboundBindAddressOR,
+                                   OUTBOUND_ADDR_OR, options, validate_only,
+                                   msg) < 0) {
+    goto err;
+  }
+
+  if (parse_outbound_address_lines(options->OutboundBindAddressExit,
+                                   OUTBOUND_ADDR_EXIT, options, validate_only,
+                                   msg)  < 0) {
+    goto err;
+  }
+
   return 0;
+ err:
+  return -1;
 }
 
 /** Load one of the geoip files, <a>family</a> determining which
diff --git a/src/test/test_options.c b/src/test/test_options.c
index 5f35c47f7..92e698282 100644
--- a/src/test/test_options.c
+++ b/src/test/test_options.c
@@ -528,6 +528,8 @@ test_options_validate__outbound_addresses(void *ignored)
 
   ret = options_validate(tdata->old_opt, tdata->opt, tdata->def_opt, 0, &msg);
   tt_int_op(ret, OP_EQ, -1);
+  tt_str_op(msg, OP_EQ, "Multiple outbound bind addresses configured: "
+                        "xxyy!!!sdfaf");
 
  done:
   free_options_test_data(tdata);





More information about the tor-commits mailing list