Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions changes/bug33668
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
o Minor bugfixes (--disable-module-relay):
- Fix an assertion failure when Tor is build without the relay module,
and then invoked with the "User" option. Fixes bug 33668; bugfix on
0.4.3.1-alpha.
4 changes: 4 additions & 0 deletions changes/bug33674
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
o Minor bugfixes (--disable-module-relay,--disable-module-dirauth):
- Set some output arguments in the relay and dirauth module stubs, to
guard against future stub argument handling bugs like 33668.
Fixes bug 33674; bugfix on 0.4.3.1-alpha.
10 changes: 8 additions & 2 deletions src/feature/dirauth/dirauth_config.h
Original file line number Diff line number Diff line change
Expand Up @@ -75,8 +75,14 @@ options_validate_dirauth_mode(const struct or_options_t *old_options,
#define options_act_dirauth_mtbf(old_options) \
(((void)(old_options)),0)

#define options_act_dirauth_stats(old_options, print_notice_out) \
(((void)(old_options)),((void)(print_notice_out)),0)
static inline int
options_act_dirauth_stats(const struct or_options_t *old_options,
bool *print_notice_out)
{
(void)old_options;
*print_notice_out = 0;
return 0;
}

#define dirauth_should_reject_requests_under_load() (false)

Expand Down
24 changes: 20 additions & 4 deletions src/feature/dirauth/dirvote.c
Original file line number Diff line number Diff line change
Expand Up @@ -2527,9 +2527,12 @@ compute_consensus_package_lines(smartlist_t *votes)
* any new signatures in <b>src_voter_list</b> that should be added to
* <b>target</b>. (A signature should be added if we have no signature for that
* voter in <b>target</b> yet, or if we have no verifiable signature and the
* new signature is verifiable.) Return the number of signatures added or
* changed, or -1 if the document signed by <b>sigs</b> isn't the same
* document as <b>target</b>. */
* new signature is verifiable.)
*
* Return the number of signatures added or changed, or -1 if the document
* signatures are invalid. Sets *<b>msg_out</b> to a string constant
* describing the signature status.
*/
STATIC int
networkstatus_add_detached_signatures(networkstatus_t *target,
ns_detached_signatures_t *sigs,
Expand Down Expand Up @@ -3564,6 +3567,14 @@ dirvote_add_signatures_to_pending_consensus(
return r;
}

/** Helper: we just got the <b>detached_signatures_body</b> sent to us as
* signatures on the currently pending consensus. Add them to the pending
* consensus (if we have one).
*
* Set *<b>msg</b> to a string constant describing the status, regardless of
* success or failure.
*
* Return negative on failure, nonnegative on success. */
static int
dirvote_add_signatures_to_all_pending_consensuses(
const char *detached_signatures_body,
Expand Down Expand Up @@ -3626,7 +3637,12 @@ dirvote_add_signatures_to_all_pending_consensuses(
/** Helper: we just got the <b>detached_signatures_body</b> sent to us as
* signatures on the currently pending consensus. Add them to the pending
* consensus (if we have one); otherwise queue them until we have a
* consensus. Return negative on failure, nonnegative on success. */
* consensus.
*
* Set *<b>msg</b> to a string constant describing the status, regardless of
* success or failure.
*
* Return negative on failure, nonnegative on success. */
int
dirvote_add_signatures(const char *detached_signatures_body,
const char *source,
Expand Down
2 changes: 1 addition & 1 deletion src/feature/dirauth/dirvote.h
Original file line number Diff line number Diff line change
Expand Up @@ -162,7 +162,7 @@ dirvote_add_signatures(const char *detached_signatures_body,
{
(void) detached_signatures_body;
(void) source;
(void) msg_out;
*msg_out = "No directory authority support";
/* If the dirauth module is disabled, this should NEVER be called else we
* failed to safeguard the dirauth module. */
tor_assert_nonfatal_unreached();
Expand Down
8 changes: 5 additions & 3 deletions src/feature/dirauth/process_descs.c
Original file line number Diff line number Diff line change
Expand Up @@ -285,7 +285,7 @@ dirserv_load_fingerprint_file(void)
* Return the appropriate router status.
*
* If the status is 'RTR_REJECT' and <b>msg</b> is provided, set
* *<b>msg</b> to an explanation of why. */
* *<b>msg</b> to a string constant explaining why. */
uint32_t
dirserv_router_get_status(const routerinfo_t *router, const char **msg,
int severity)
Expand Down Expand Up @@ -563,7 +563,8 @@ dirserv_router_has_valid_address(routerinfo_t *ri)
/** Check whether we, as a directory server, want to accept <b>ri</b>. If so,
* set its is_valid,running fields and return 0. Otherwise, return -1.
*
* If the router is rejected, set *<b>msg</b> to an explanation of why.
* If the router is rejected, set *<b>msg</b> to a string constant explining
* why.
*
* If <b>complain</b> then explain at log-level 'notice' why we refused
* a descriptor; else explain at log-level 'info'.
Expand Down Expand Up @@ -729,7 +730,8 @@ dirserv_add_multiple_descriptors(const char *desc, size_t desclen,
* That means the caller must not access <b>ri</b> after this function
* returns, since it might have been freed.
*
* Return the status of the operation.
* Return the status of the operation, and set *<b>msg</b> to a string
* constant describing the status.
*
* This function is only called when fresh descriptors are posted, not when
* we re-load the cache.
Expand Down
11 changes: 6 additions & 5 deletions src/feature/dirauth/process_descs.h
Original file line number Diff line number Diff line change
Expand Up @@ -98,7 +98,7 @@ dirserv_add_multiple_descriptors(const char *desc, size_t desclen,
(void)desclen;
(void)purpose;
(void)source;
(void)msg;
*msg = "No directory authority support";
return (enum was_router_added_t)0;
}
static inline enum was_router_added_t
Expand All @@ -107,8 +107,8 @@ dirserv_add_descriptor(routerinfo_t *ri,
const char *source)
{
(void)ri;
(void)msg;
(void)source;
*msg = "No directory authority support";
return (enum was_router_added_t)0;
}
static inline int
Expand All @@ -125,9 +125,9 @@ authdir_wants_to_reject_router(routerinfo_t *ri, const char **msg,
int *valid_out)
{
(void)ri;
(void)msg;
(void)complain;
(void)valid_out;
*msg = "No directory authority support";
*valid_out = 0;
return 0;
}
static inline int
Expand All @@ -143,8 +143,9 @@ dirserv_router_get_status(const routerinfo_t *router,
int severity)
{
(void)router;
(void)msg;
(void)severity;
if (msg)
*msg = "No directory authority support";
return 0;
}
static inline void
Expand Down
7 changes: 4 additions & 3 deletions src/feature/relay/relay_config.c
Original file line number Diff line number Diff line change
Expand Up @@ -231,8 +231,8 @@ check_server_ports(const smartlist_t *ports,
}

/** Parse all relay ports from <b>options</b>. On success, add parsed ports to
* <b>ports</b>, and return 0. On failure, set *<b>msg</b> to a description
* of the problem and return -1.
* <b>ports</b>, and return 0. On failure, set *<b>msg</b> to a newly
* allocated string describing the problem, and return -1.
**/
int
port_parse_ports_relay(or_options_t *options,
Expand Down Expand Up @@ -334,7 +334,8 @@ port_update_port_set_relay(or_options_t *options,
* Legacy validation function, which checks that the current OS is usable in
* relay mode, if options is set to a relay mode.
*
* Warns about OSes with potential issues. Always returns 0.
* Warns about OSes with potential issues. Does not set *<b>msg</b>.
* Always returns 0.
*/
int
options_validate_relay_os(const or_options_t *old_options,
Expand Down
17 changes: 14 additions & 3 deletions src/feature/relay/relay_config.h
Original file line number Diff line number Diff line change
Expand Up @@ -125,6 +125,20 @@ options_validate_relay_mode(const struct or_options_t *old_options,
return 0;
}

static inline int
port_parse_ports_relay(or_options_t *options,
char **msg,
smartlist_t *ports_out,
int *have_low_ports_out)
{
(void)options;
(void)msg;
(void)ports_out;
if (*have_low_ports_out < 0)
*have_low_ports_out = 0;
return 0;
}

#define relay_get_dirportfrontpage() \
(NULL)
#define relay_config_free_all() \
Expand All @@ -138,9 +152,6 @@ options_validate_relay_mode(const struct or_options_t *old_options,
#define port_warn_nonlocal_ext_orports(ports, portname) \
(((void)(ports)),((void)(portname)))

#define port_parse_ports_relay(options, msg, ports_out, have_low_ports_out) \
(((void)(options)),((void)(msg)),((void)(ports_out)), \
((void)(have_low_ports_out)),0)
#define port_update_port_set_relay(options, ports) \
(((void)(options)),((void)(ports)))

Expand Down