diff --git a/be/src/olap/key_coder.h b/be/src/olap/key_coder.h index 3602958d479400..8eb65140c9a2c0 100644 --- a/be/src/olap/key_coder.h +++ b/be/src/olap/key_coder.h @@ -261,12 +261,13 @@ class KeyCoderTraits { template <> class KeyCoderTraits { public: - static void full_encode_ascending(const void* value, std::string* buf) { + NO_SANITIZE_UNDEFINED static void full_encode_ascending(const void* value, std::string* buf) { auto slice = reinterpret_cast(value); buf->append(slice->get_data(), slice->get_size()); } - static void encode_ascending(const void* value, size_t index_size, std::string* buf) { + NO_SANITIZE_UNDEFINED static void encode_ascending(const void* value, size_t index_size, + std::string* buf) { const Slice* slice = (const Slice*)value; CHECK(index_size <= slice->size) << "index size is larger than char size, index=" << index_size @@ -282,12 +283,13 @@ class KeyCoderTraits { template <> class KeyCoderTraits { public: - static void full_encode_ascending(const void* value, std::string* buf) { + NO_SANITIZE_UNDEFINED static void full_encode_ascending(const void* value, std::string* buf) { auto slice = reinterpret_cast(value); buf->append(slice->get_data(), slice->get_size()); } - static void encode_ascending(const void* value, size_t index_size, std::string* buf) { + NO_SANITIZE_UNDEFINED static void encode_ascending(const void* value, size_t index_size, + std::string* buf) { const Slice* slice = (const Slice*)value; size_t copy_size = std::min(index_size, slice->size); buf->append(slice->data, copy_size); @@ -301,12 +303,13 @@ class KeyCoderTraits { template <> class KeyCoderTraits { public: - static void full_encode_ascending(const void* value, std::string* buf) { + NO_SANITIZE_UNDEFINED static void full_encode_ascending(const void* value, std::string* buf) { auto slice = reinterpret_cast(value); buf->append(slice->get_data(), slice->get_size()); } - static void encode_ascending(const void* value, size_t index_size, std::string* buf) { + NO_SANITIZE_UNDEFINED static void encode_ascending(const void* value, size_t index_size, + std::string* buf) { const Slice* slice = (const Slice*)value; size_t copy_size = std::min(index_size, slice->size); buf->append(slice->data, copy_size); diff --git a/conf/ubsan_ignorelist.txt b/conf/ubsan_ignorelist.txt index 9cf750cb44a287..c107b2c5e91a4b 100644 --- a/conf/ubsan_ignorelist.txt +++ b/conf/ubsan_ignorelist.txt @@ -10,6 +10,7 @@ src:*/json/new_json_reader.cpp src:*/common/memcpy_small.h src:*/util/mysql_row_buffer.cpp src:*/util/bitmap_intersect.h +src:*/util/slice.h fun:*BaseFieldTypeTraits* fun:*FieldTypeTraits* fun:*KeyCoderTraits* diff --git a/conf/ubsan_suppr.conf b/conf/ubsan_suppr.conf index 82e118c798133b..4d4dc69b4b6768 100644 --- a/conf/ubsan_suppr.conf +++ b/conf/ubsan_suppr.conf @@ -15,4 +15,5 @@ # specific language governing permissions and limitations # under the License. -alignment:hash_util.hpp \ No newline at end of file +alignment:hash_util.hpp +alignment:slice.h \ No newline at end of file