Loading changes/bug23524 0 → 100644 +4 −0 Original line number Diff line number Diff line o Minor bugfixes (DoS-resistance): - If future code asks if there are any running bridges, without checking if bridges are enabled, log a BUG warning rather than crashing. Fixes 23524 on 0.3.0.1-alpha. src/or/bridges.c +6 −3 Original line number Diff line number Diff line Loading @@ -455,8 +455,8 @@ bridge_add_from_config(bridge_line_t *bridge_line) b->fetch_status.schedule = DL_SCHED_BRIDGE; b->fetch_status.backoff = DL_SCHED_RANDOM_EXPONENTIAL; b->fetch_status.increment_on = DL_SCHED_INCREMENT_ATTEMPT; /* This will fail if UseBridges is not set -- and it does. */ // download_status_reset(&b->fetch_status); /* We can't reset the bridge's download status here, because UseBridges * might be 0 now, and it might be changed to 1 much later. */ b->socks_args = bridge_line->socks_args; if (!bridge_list) bridge_list = smartlist_new(); Loading Loading @@ -625,6 +625,7 @@ fetch_bridge_descriptors(const or_options_t *options, time_t now) SMARTLIST_FOREACH_BEGIN(bridge_list, bridge_info_t *, bridge) { /* This resets the download status on first use */ if (!download_status_is_ready(&bridge->fetch_status, now, IMPOSSIBLE_TO_DOWNLOAD)) continue; /* don't bother, no need to retry yet */ Loading Loading @@ -835,7 +836,9 @@ learned_bridge_descriptor(routerinfo_t *ri, int from_cache) MOCK_IMPL(int, any_bridge_descriptors_known, (void)) { tor_assert(get_options()->UseBridges); if (BUG(!get_options()->UseBridges)) { return 0; } if (!bridge_list) return 0; Loading src/or/directory.c +1 −1 Original line number Diff line number Diff line Loading @@ -5379,7 +5379,7 @@ find_dl_schedule(const download_status_t *dls, const or_options_t *options) } case DL_SCHED_BRIDGE: /* A bridge client downloading bridge descriptors */ if (any_bridge_descriptors_known()) { if (options->UseBridges && any_bridge_descriptors_known()) { /* A bridge client with one or more running bridges */ return options->TestingBridgeDownloadSchedule; } else { Loading Loading
changes/bug23524 0 → 100644 +4 −0 Original line number Diff line number Diff line o Minor bugfixes (DoS-resistance): - If future code asks if there are any running bridges, without checking if bridges are enabled, log a BUG warning rather than crashing. Fixes 23524 on 0.3.0.1-alpha.
src/or/bridges.c +6 −3 Original line number Diff line number Diff line Loading @@ -455,8 +455,8 @@ bridge_add_from_config(bridge_line_t *bridge_line) b->fetch_status.schedule = DL_SCHED_BRIDGE; b->fetch_status.backoff = DL_SCHED_RANDOM_EXPONENTIAL; b->fetch_status.increment_on = DL_SCHED_INCREMENT_ATTEMPT; /* This will fail if UseBridges is not set -- and it does. */ // download_status_reset(&b->fetch_status); /* We can't reset the bridge's download status here, because UseBridges * might be 0 now, and it might be changed to 1 much later. */ b->socks_args = bridge_line->socks_args; if (!bridge_list) bridge_list = smartlist_new(); Loading Loading @@ -625,6 +625,7 @@ fetch_bridge_descriptors(const or_options_t *options, time_t now) SMARTLIST_FOREACH_BEGIN(bridge_list, bridge_info_t *, bridge) { /* This resets the download status on first use */ if (!download_status_is_ready(&bridge->fetch_status, now, IMPOSSIBLE_TO_DOWNLOAD)) continue; /* don't bother, no need to retry yet */ Loading Loading @@ -835,7 +836,9 @@ learned_bridge_descriptor(routerinfo_t *ri, int from_cache) MOCK_IMPL(int, any_bridge_descriptors_known, (void)) { tor_assert(get_options()->UseBridges); if (BUG(!get_options()->UseBridges)) { return 0; } if (!bridge_list) return 0; Loading
src/or/directory.c +1 −1 Original line number Diff line number Diff line Loading @@ -5379,7 +5379,7 @@ find_dl_schedule(const download_status_t *dls, const or_options_t *options) } case DL_SCHED_BRIDGE: /* A bridge client downloading bridge descriptors */ if (any_bridge_descriptors_known()) { if (options->UseBridges && any_bridge_descriptors_known()) { /* A bridge client with one or more running bridges */ return options->TestingBridgeDownloadSchedule; } else { Loading