This is an automated email from the ASF dual-hosted git repository.
yiguolei pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/doris.git
The following commit(s) were added to refs/heads/master by this push:
new 78f2e4b7242 [fix](be) core dump because of invalid bitmap data (#53088)
78f2e4b7242 is described below
commit 78f2e4b7242c68e28cbdc03691e8aa5110fac7a0
Author: JinYang <[email protected]>
AuthorDate: Sat Jul 26 23:38:11 2025 +0800
[fix](be) core dump because of invalid bitmap data (#53088)
---
be/src/util/bitmap_value.h | 7 ++++++-
be/test/util/bitmap_value_test.cpp | 6 ++++++
2 files changed, 12 insertions(+), 1 deletion(-)
diff --git a/be/src/util/bitmap_value.h b/be/src/util/bitmap_value.h
index 903317ebe65..e3a0ae17755 100644
--- a/be/src/util/bitmap_value.h
+++ b/be/src/util/bitmap_value.h
@@ -1959,7 +1959,12 @@ public:
case BitmapTypeCode::BITMAP64_V2:
_type = BITMAP;
_is_shared = false;
- _bitmap =
std::make_shared<detail::Roaring64Map>(detail::Roaring64Map::read(src));
+ try {
+ _bitmap =
std::make_shared<detail::Roaring64Map>(detail::Roaring64Map::read(src));
+ } catch (const std::runtime_error& e) {
+ LOG(ERROR) << "Decode roaring bitmap failed, " << e.what();
+ return false;
+ }
break;
case BitmapTypeCode::SET: {
_type = SET;
diff --git a/be/test/util/bitmap_value_test.cpp
b/be/test/util/bitmap_value_test.cpp
index 2c08161450e..74980ee9091 100644
--- a/be/test/util/bitmap_value_test.cpp
+++ b/be/test/util/bitmap_value_test.cpp
@@ -1188,4 +1188,10 @@ TEST(BitmapValueTest, bitmap_value_iterator_test) {
}
}
}
+
+TEST(BitmapValueTest, invalid_data) {
+ BitmapValue bitmap;
+ char data[] = {0x02, static_cast<char>(0xff), 0x03};
+ EXPECT_FALSE(bitmap.deserialize(data));
+}
} // namespace doris
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]