]> git.ipfire.org Git - thirdparty/tor.git/commitdiff
fixup! Add controller getinfo exit-policy/reject-private
authorteor (Tim Wilson-Brown) <teor2345@gmail.com>
Sun, 22 Nov 2015 21:46:26 +0000 (08:46 +1100)
committerNick Mathewson <nickm@torproject.org>
Thu, 26 Nov 2015 03:26:10 +0000 (22:26 -0500)
Stop ignoring ExitPolicyRejectPrivate in getinfo
exit-policy/reject-private. Fix a memory leak.

Set ExitPolicyRejectPrivate in the unit tests, and make a mock
function declaration static.

src/or/policies.c
src/test/test_policy.c

index 4d9b17cc328ac47650bcc4f875ad00bb3ae0d353..ec11375636a54f04bf8fa193aec3de5187364efc 100644 (file)
@@ -2140,14 +2140,20 @@ getinfo_helper_policies(control_connection_t *conn,
   } else if (!strcmp(question, "exit-policy/reject-private/relay")) {
     const or_options_t *options = get_options();
     const routerinfo_t *me = router_get_my_routerinfo();
-    smartlist_t *private_policy_list = smartlist_new();
-    smartlist_t *configured_addresses = smartlist_new();
 
     if (!me) {
       *errmsg = "router_get_my_routerinfo returned NULL";
       return -1;
     }
 
+    if (!options->ExitPolicyRejectPrivate) {
+      *answer = tor_strdup("");
+      return 0;
+    }
+
+    smartlist_t *private_policy_list = smartlist_new();
+    smartlist_t *configured_addresses = smartlist_new();
+
     /* Add the configured addresses to the tor_addr_t* list */
     policies_add_ipv4h_to_smartlist(configured_addresses, me->addr);
     policies_add_addr_to_smartlist(configured_addresses, &me->ipv6_addr);
@@ -2162,6 +2168,7 @@ getinfo_helper_policies(control_connection_t *conn,
     *answer = policy_dump_to_string(private_policy_list, 1, 1);
 
     addr_policy_list_free(private_policy_list);
+    addr_policy_list_free(configured_addresses);
   } else if (!strcmpstart(question, "exit-policy/")) {
     const routerinfo_t *me = router_get_my_routerinfo();
 
index 63672ea6cd9e65113693ebed56d7dde9f24b6c9d..082f9305519a19ac478c2e71b2513562645c1aeb 100644 (file)
@@ -994,6 +994,7 @@ test_policies_getinfo_helper_policies(void *arg)
   append_exit_policy_string(&mock_my_routerinfo.exit_policy, "reject *6:*");
 
   mock_options.IPv6Exit = 1;
+  mock_options.ExitPolicyRejectPrivate = 1;
   tor_addr_from_ipv4h(&mock_options.OutboundBindAddressIPv4_, TEST_IPV4_ADDR);
   tor_addr_parse(&mock_options.OutboundBindAddressIPv6_, TEST_IPV6_ADDR);