tor

The Tor anonymity network
git clone https://git.dasho.dev/tor.git
Log | Files | Refs | README | LICENSE

commit cd2bc94c44c5b01044105ab4bd844e84bf2b163e
parent c24203cf31328c21169d3af87265d110ccc86080
Author: David Goulet <dgoulet@torproject.org>
Date:   Mon, 18 Sep 2023 09:10:39 -0400

Merge branch 'tor-gitlab/mr/761' into maint-0.4.8

Diffstat:
Achanges/ticket40739 | 3+++
Msrc/lib/compress/compress.c | 10+++++++++-
Msrc/test/test_util.c | 2+-
3 files changed, 13 insertions(+), 2 deletions(-)

diff --git a/changes/ticket40739 b/changes/ticket40739 @@ -0,0 +1,3 @@ + o Minor features (debugging, compression): + - Log the input and output buffer sizes when we detect a potential + compression bomb. Diagnostic for ticket 40739. diff --git a/src/lib/compress/compress.c b/src/lib/compress/compress.c @@ -66,7 +66,15 @@ tor_compress_is_compression_bomb,(size_t size_in, size_t size_out)) if (size_in == 0 || size_out < CHECK_FOR_COMPRESSION_BOMB_AFTER) return 0; - return (size_out / size_in > MAX_UNCOMPRESSION_FACTOR); + if (size_out / size_in > MAX_UNCOMPRESSION_FACTOR) { + log_warn(LD_GENERAL, + "Detected possible compression bomb with " + "input size = %"TOR_PRIuSZ " and output size = %"TOR_PRIuSZ, + size_in, size_out); + return 1; + } + + return 0; } /** Guess the size that <b>in_len</b> will be after compression or diff --git a/src/test/test_util.c b/src/test/test_util.c @@ -2945,7 +2945,7 @@ test_util_gzip_compression_bomb(void *arg) tt_int_op(-1, OP_EQ, tor_compress(&result, &result_len, one_mb, one_million, ZLIB_METHOD)); - expect_single_log_msg_containing( + expect_log_msg_containing( "We compressed something and got an insanely high " "compression factor; other Tors would think this " "was a compression bomb.");