]> git.ipfire.org Git - thirdparty/tor.git/commitdiff
Detect and suppress bug message from zlib compression bomb test
authorNick Mathewson <nickm@torproject.org>
Wed, 31 Aug 2016 18:30:34 +0000 (14:30 -0400)
committerNick Mathewson <nickm@torproject.org>
Wed, 31 Aug 2016 18:30:34 +0000 (14:30 -0400)
src/test/log_test_helpers.h
src/test/test_util.c

index 039c7ae1ebb299c745688da6c72b621133e05b57..f33ee67a90ff2ceafced310e75384c5248699329 100644 (file)
@@ -35,6 +35,13 @@ int mock_saved_log_has_entry(void);
   tt_assert_msg(mock_saved_log_has_message_containing(str), \
                 "expected log to contain " # str);
 
+#define expect_single_log_msg_containing(str) \
+  do {                                                        \
+    tt_assert_msg(mock_saved_log_has_message_containing(str), \
+                  "expected log to contain " # str);          \
+    tt_int_op(smartlist_len(mock_saved_logs()), OP_EQ, 1);    \
+  } while (0);
+
 #define expect_no_log_msg(str) \
   tt_assert_msg(!mock_saved_log_has_message(str), \
                 "expected log to not contain " # str);
index 061398cb846c18d3fa0a5a06b550d5f480f46e00..2ff9d771048af74d312ff9e36772347c880b9c6b 100644 (file)
@@ -2216,10 +2216,17 @@ test_util_gzip_compression_bomb(void *arg)
   size_t result_len = 0;
   tor_zlib_state_t *state = NULL;
 
+
   /* Make sure we can't produce a compression bomb */
+  const int prev_level = setup_full_capture_of_logs(LOG_WARN);
   tt_int_op(-1, OP_EQ, tor_gzip_compress(&result, &result_len,
                                          one_mb, one_million,
                                          ZLIB_METHOD));
+  expect_single_log_msg_containing(
+         "We compressed something and got an insanely high "
+         "compression factor; other Tors would think this "
+         "was a zlib bomb.");
+  teardown_capture_of_logs(prev_level);
 
   /* Here's a compression bomb that we made manually. */
   const char compression_bomb[1039] =
@@ -5464,7 +5471,7 @@ struct testcase_t util_tests[] = {
   UTIL_LEGACY(strmisc),
   UTIL_LEGACY(pow2),
   UTIL_LEGACY(gzip),
-  UTIL_LEGACY(gzip_compression_bomb),
+  UTIL_TEST(gzip_compression_bomb, TT_FORK),
   UTIL_LEGACY(datadir),
   UTIL_LEGACY(memarea),
   UTIL_LEGACY(control_formats),