]> git.ipfire.org Git - thirdparty/tor.git/commitdiff
hs-v3: Remove a possible BUG() condition
authorDavid Goulet <dgoulet@torproject.org>
Thu, 9 Jul 2020 11:55:46 +0000 (07:55 -0400)
committerDavid Goulet <dgoulet@torproject.org>
Thu, 9 Jul 2020 12:32:53 +0000 (08:32 -0400)
When receiving an introduction NACK, the client either decides to close or
re-extend the circuit to another intro point.

In order to do this, the service descriptor needs to exists but it is possible
that it gets removed from the cache between the establishement of the
introduction circuit and the reception of the (N)ACK.

For that reason, the BUG(desc == NULL) is removed because it is a possible
normal use case. Tor recovers gracefully already.

Fixes #34087

Signed-off-by: David Goulet <dgoulet@torproject.org>
changes/ticket34087 [new file with mode: 0644]
src/feature/hs/hs_client.c

diff --git a/changes/ticket34087 b/changes/ticket34087
new file mode 100644 (file)
index 0000000..16990c3
--- /dev/null
@@ -0,0 +1,3 @@
+  o Minor bugfix (onion service v3 client):
+    - Remove a BUG() warning that can occur naturally. Fixes bug 34087; bugfix
+      on 0.3.2.1-alpha.
index 7f4d5385e91adb9d34f5bc43330299085e2fc303..892f69a3a029c2470c2015614a537016a4287636 100644 (file)
@@ -1065,8 +1065,10 @@ close_or_reextend_intro_circ(origin_circuit_t *intro_circ)
   tor_assert(intro_circ);
 
   desc = hs_cache_lookup_as_client(&intro_circ->hs_ident->identity_pk);
-  if (BUG(desc == NULL)) {
-    /* We can't continue without a descriptor. */
+  if (desc == NULL) {
+    /* We can't continue without a descriptor. This is possible if the cache
+     * was cleaned up between the intro point established and the reception of
+     * the introduce ack. */
     goto close;
   }
   /* We still have the descriptor, great! Let's try to see if we can