Unverified Commit 71ba517e authored by Andrea Shepard's avatar Andrea Shepard
Browse files

Check return value from connection_or_connect() in channel_tls_connect()

It's possible for connection_or_connect() to fail and return NULL after it
sets tlschan->conn, so not checking leaves a channel hanging around in
CHANNEL_STATE_OPENING with a pointer to a freed or_connection_t forever.
parent b1b33f15
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -129,7 +129,7 @@ channel_tls_connect(const tor_addr_t *addr, uint16_t port,
    cell_ewma_get_tick();

  /* Set up or_connection stuff */
  connection_or_connect(addr, port, id_digest, tlschan);
  tlschan->conn = connection_or_connect(addr, port, id_digest, tlschan);
  /* connection_or_connect() will fill in tlschan->conn */
  if (!(tlschan->conn)) {
    channel_change_state(chan, CHANNEL_STATE_ERROR);