]> git.ipfire.org Git - thirdparty/tor.git/commitdiff
Disable the dump_desc() function.
authorNick Mathewson <nickm@torproject.org>
Fri, 19 Feb 2021 17:31:19 +0000 (12:31 -0500)
committerNick Mathewson <nickm@torproject.org>
Fri, 19 Feb 2021 17:31:19 +0000 (12:31 -0500)
It can be called with strings that should have been
length-delimited, but which in fact are not.  This can cause a
CPU-DoS bug or, in a worse case, a crash.

Since this function isn't essential, the best solution for older
Tors is to just turn it off.

Fixes bug 40286; bugfix on 0.2.2.1-alpha when dump_desc() was
introduced.

changes/ticket40286_minimal [new file with mode: 0644]
src/feature/dirparse/unparseable.c

diff --git a/changes/ticket40286_minimal b/changes/ticket40286_minimal
new file mode 100644 (file)
index 0000000..b8669de
--- /dev/null
@@ -0,0 +1,5 @@
+  o Major bugfixes (denial of service):
+    - Disable the dump_desc() function that we used to dump unparseable
+      information to disk. It was called incorrectly in several places,
+      in a way that could lead to excessive CPU usage.
+      Fixes bug 40286; bugfix on 0.2.2.1-alpha.
index 941b5a1f6db597fd61ba084d46fc836a8af39823..a547335452a09e0e9d2a0f13670b7e95bb48882b 100644 (file)
@@ -492,6 +492,12 @@ dump_desc,(const char *desc, const char *type))
 {
   tor_assert(desc);
   tor_assert(type);
+#ifndef TOR_UNIT_TESTS
+  /* On older versions of Tor we are disabling this function, since it
+   * can be called with strings that are far too long. */
+  if (1)
+    return;
+#endif
   size_t len;
   /* The SHA256 of the string */
   uint8_t digest_sha256[DIGEST256_LEN];