]> git.ipfire.org Git - thirdparty/tor.git/commitdiff
Warn when operating as bridge and exit
authortrinity-1686a <trinity@deuxfleurs.fr>
Mon, 17 Jul 2023 17:19:04 +0000 (19:19 +0200)
committertrinity-1686a <trinity@deuxfleurs.fr>
Mon, 17 Jul 2023 17:40:26 +0000 (19:40 +0200)
src/core/or/policies.c
src/core/or/policies.h
src/feature/relay/relay_config.c

index a53849b4d0c281e9aa94efadcf1ce9929d6afa26..1864b84d5e4c6a910bb3688b64712dedcd1f392f 100644 (file)
@@ -1138,7 +1138,7 @@ authdir_policy_middleonly_address(const tor_addr_t *addr, uint16_t port)
 
 /** Check <b>or_options</b> to determine whether or not we are using the
  * default options for exit policy. Return true if so, false otherwise. */
-static int
+int
 policy_using_default_exit_options(const or_options_t *or_options)
 {
   return (or_options->ExitPolicy == NULL && or_options->ExitRelay == -1 &&
index e11e1d0ff5b9cd9199219a6410d44a00596e2065..9276b76d01341b4947c237c37d165f3dd7960f34 100644 (file)
@@ -108,6 +108,7 @@ int authdir_policy_valid_address(const tor_addr_t *addr, uint16_t port);
 int authdir_policy_badexit_address(const tor_addr_t *addr, uint16_t port);
 int authdir_policy_middleonly_address(const tor_addr_t *addr, uint16_t port);
 
+int policy_using_default_exit_options(const or_options_t *or_options);
 int validate_addr_policies(const or_options_t *options, char **msg);
 void policy_expand_private(smartlist_t **policy);
 void policy_expand_unspec(smartlist_t **policy);
index 553b269ecf0a27fd8372be42cea3fbbc9d9f9b5c..0b02461318ef3db55651961911f1be646137e5e0 100644 (file)
@@ -30,6 +30,7 @@
 #include "core/mainloop/cpuworker.h"
 #include "core/mainloop/mainloop.h"
 #include "core/or/connection_or.h"
+#include "core/or/policies.h"
 #include "core/or/port_cfg_st.h"
 
 #include "feature/hibernate/hibernate.h"
@@ -1150,6 +1151,13 @@ options_validate_relay_mode(const or_options_t *old_options,
     REJECT("BridgeRelay is 1, ORPort is not set. This is an invalid "
            "combination.");
 
+  if (options->BridgeRelay == 1 && (options->ExitRelay == 1 ||
+      !policy_using_default_exit_options(options))) {
+    log_warn(LD_CONFIG, "BridgeRelay is 1, but ExitRelay is 1 or an "
+           "ExitPolicy is configured. Tor will start, but it will not "
+           "function as an exit relay.");
+  }
+
   if (server_mode(options)) {
     char *dircache_msg = NULL;
     if (have_enough_mem_for_dircache(options, 0, &dircache_msg)) {