aboutsummaryrefslogtreecommitdiff
path: root/src/or/rendservice.c
diff options
context:
space:
mode:
authorAndrea Shepard <andrea@persephoneslair.org>2012-06-15 20:43:33 -0700
committerAndrea Shepard <andrea@persephoneslair.org>2012-06-15 20:43:33 -0700
commit88c5d3ca55dddd39e336272c9ce56a59e0092265 (patch)
treebf0c734da3761729f3368450ab4f809a85bd6789 /src/or/rendservice.c
parentd43ba536df1b7a2433b4e1f7a2faa5a089b570c5 (diff)
downloadtor-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.c15
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