aboutsummaryrefslogtreecommitdiff
path: root/tests/unit_tests/rolling_median.cpp
diff options
context:
space:
mode:
authorkoe <ukoe@protonmail.com>2020-07-21 02:00:27 -0500
committerkoe <ukoe@protonmail.com>2020-07-23 03:36:05 -0500
commit85efc88c1edc7371ca5c8722c896fd64a258ddd2 (patch)
tree82603bf55a58a77a797193e81bac479f4a2adc6c /tests/unit_tests/rolling_median.cpp
parentMerge pull request #6586 (diff)
downloadmonero-85efc88c1edc7371ca5c8722c896fd64a258ddd2.tar.xz
Fix overflow issue in epee:misc_utils::rolling_median_t and median(), with unit test
Diffstat (limited to 'tests/unit_tests/rolling_median.cpp')
-rw-r--r--tests/unit_tests/rolling_median.cpp11
1 files changed, 11 insertions, 0 deletions
diff --git a/tests/unit_tests/rolling_median.cpp b/tests/unit_tests/rolling_median.cpp
index 730f1e7c5..d415c5b95 100644
--- a/tests/unit_tests/rolling_median.cpp
+++ b/tests/unit_tests/rolling_median.cpp
@@ -170,6 +170,17 @@ TEST(rolling_median, history_blind)
}
}
+TEST(rolling_median, overflow)
+{
+ epee::misc_utils::rolling_median_t<uint64_t> m(2);
+
+ uint64_t over_half = static_cast<uint64_t>(3) << static_cast<uint64_t>(62);
+ m.insert(over_half);
+ m.insert(over_half);
+ ASSERT_EQ((over_half + over_half) < over_half, true);
+ ASSERT_EQ(over_half, m.median());
+}
+
TEST(rolling_median, size)
{
epee::misc_utils::rolling_median_t<uint64_t> m(10);