diff options
author | Andrea Shepard <andrea@persephoneslair.org> | 2012-06-15 20:43:33 -0700 |
---|---|---|
committer | Andrea Shepard <andrea@persephoneslair.org> | 2012-06-15 20:43:33 -0700 |
commit | 88c5d3ca55dddd39e336272c9ce56a59e0092265 (patch) | |
tree | bf0c734da3761729f3368450ab4f809a85bd6789 /src/or/rendservice.c | |
parent | d43ba536df1b7a2433b4e1f7a2faa5a089b570c5 (diff) | |
download | tor-88c5d3ca55dddd39e336272c9ce56a59e0092265.tar.gz tor-88c5d3ca55dddd39e336272c9ce56a59e0092265.zip |
Clean keys on stack in rend_service_intro_has_opened()
Diffstat (limited to 'src/or/rendservice.c')
-rw-r--r-- | src/or/rendservice.c | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/src/or/rendservice.c b/src/or/rendservice.c index 85e8500ff0..50950d1ac2 100644 --- a/src/or/rendservice.c +++ b/src/or/rendservice.c @@ -1627,8 +1627,8 @@ rend_service_intro_has_opened(origin_circuit_t *circuit) this case, we might as well close the thing. */ log_info(LD_CIRC|LD_REND, "We have just finished an introduction " "circuit, but we already have enough. Closing it."); - circuit_mark_for_close(TO_CIRCUIT(circuit), END_CIRC_REASON_NONE); - return; + reason = END_CIRC_REASON_NONE; + goto err; } else { tor_assert(circuit->build_state->is_internal); log_info(LD_CIRC|LD_REND, "We have just finished an introduction " @@ -1649,7 +1649,7 @@ rend_service_intro_has_opened(origin_circuit_t *circuit) } circuit_has_opened(circuit); - return; + goto done; } } @@ -1695,9 +1695,16 @@ rend_service_intro_has_opened(origin_circuit_t *circuit) goto err; } - return; + goto done; + err: circuit_mark_for_close(TO_CIRCUIT(circuit), reason); + done: + memset(buf, 0, sizeof(buf)); + memset(auth, 0, sizeof(auth)); + memset(serviceid, 0, sizeof(serviceid)); + + return; } /** Called when we get an INTRO_ESTABLISHED cell; mark the circuit as a |