Don't call tor_tls_set_logged_address till after checking conn->tls

Fixes bug 4531; partial backport of e27a26d5.
This commit is contained in:
Nick Mathewson 2011-12-02 16:15:52 -05:00
parent 2b5a035604
commit 6171bdd105
2 changed files with 6 additions and 2 deletions

4
changes/bug4531 Normal file
View File

@ -0,0 +1,4 @@
o Major bugfixes:
- Fix null-pointer access that could occur if TLS allocation failed.
Fixes bug 4531; bugfix on 0.2.0.20-rc. Found by "troll_un".

View File

@ -871,12 +871,12 @@ connection_tls_start_handshake(or_connection_t *conn, int receiving)
{
conn->_base.state = OR_CONN_STATE_TLS_HANDSHAKING;
conn->tls = tor_tls_new(conn->_base.s, receiving);
tor_tls_set_logged_address(conn->tls, // XXX client and relay?
escaped_safe_str(conn->_base.address));
if (!conn->tls) {
log_warn(LD_BUG,"tor_tls_new failed. Closing.");
return -1;
}
tor_tls_set_logged_address(conn->tls, // XXX client and relay?
escaped_safe_str(conn->_base.address));
connection_start_reading(TO_CONN(conn));
log_debug(LD_HANDSHAKE,"starting TLS handshake on fd %d", conn->_base.s);
note_crypto_pk_op(receiving ? TLS_HANDSHAKE_S : TLS_HANDSHAKE_C);