Commit e62b8bce authored by David Goulet's avatar David Goulet 🐼
Browse files

hs: Fix assert in hs_metrics_update_by_ident()



The hs_metrics_failed_rdv() macro could pass a NULL value for the identity key
when a building circuit would end up in a failure path *before* the "hs_ident"
was able to be set which leading to this assert.

This was introduced in 0.4.8.1-alpha with the addition of rendezvous circuit
failure metrics for the MetricsPort.

This fixes TROVE-2023-006 for which its severity is considered high.

Signed-off-by: David Goulet's avatarDavid Goulet <dgoulet@torproject.org>
parent c7d8501d
Loading
Loading
Loading
Loading

changes/ticket40883

0 → 100644
+4 −0
Original line number Diff line number Diff line
  o Major bugfixes (onion service, TROVE-2023-006):
    - Fix a possible hard assert on a NULL pointer when recording a failed
      rendezvous circuit on the service side for the MetricsPort. Fixes bug
      40883; bugfix on 0.4.8.1-alpha
+6 −1
Original line number Diff line number Diff line
@@ -199,7 +199,12 @@ hs_metrics_update_by_ident(const hs_metrics_key_t key,
{
  hs_service_t *service;

  tor_assert(ident_pk);
  if (!ident_pk) {
    /* We can end up here in case this is used from a failure/closing path for
     * which we might not have any identity key attacehed to a circuit or
     * connection yet. Simply don't assume we have one. */
    return;
  }

  service = hs_service_find(ident_pk);
  if (!service) {