diff options
author | Nick Mathewson <nickm@torproject.org> | 2020-03-14 14:44:33 -0400 |
---|---|---|
committer | Nick Mathewson <nickm@torproject.org> | 2020-03-16 17:59:57 -0400 |
commit | 78bcfc1280b322ba57a10a116457616eeb742ab6 (patch) | |
tree | 59a317fbc9c2dacd95c1e300a475b6dfb9c1592f /src | |
parent | 7a9e2a261b44b93e244c04593dee8f7757ba32bc (diff) | |
download | tor-78bcfc1280b322ba57a10a116457616eeb742ab6.tar.gz tor-78bcfc1280b322ba57a10a116457616eeb742ab6.zip |
circpad_setup_machine_on_circ(): exit early on error.
This function does a nonfatal assertion to make sure that a machine
is not registered twice, but Tobias Pulls found a case where it
happens. Instead, make the function exit early so that it doesn't
cause a remotely triggered memory leak.
Fixes bug 33619; bugfix on 0.4.0.1-alpha. This is also tracked as
TROVE-2020-004.
Diffstat (limited to 'src')
-rw-r--r-- | src/core/or/circuitpadding.c | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/src/core/or/circuitpadding.c b/src/core/or/circuitpadding.c index a62cdcf9e6..72b770113c 100644 --- a/src/core/or/circuitpadding.c +++ b/src/core/or/circuitpadding.c @@ -2381,9 +2381,12 @@ circpad_setup_machine_on_circ(circuit_t *on_circ, return; } - tor_assert_nonfatal(on_circ->padding_machine[machine->machine_index] - == NULL); - tor_assert_nonfatal(on_circ->padding_info[machine->machine_index] == NULL); + IF_BUG_ONCE(on_circ->padding_machine[machine->machine_index] != NULL) { + return; + } + IF_BUG_ONCE(on_circ->padding_info[machine->machine_index] != NULL) { + return; + } /* Log message */ if (CIRCUIT_IS_ORIGIN(on_circ)) { |