From a444bb512b769b000ee3c65b4e20067fb9d1d472 Mon Sep 17 00:00:00 2001 From: achirkin Date: Fri, 7 Feb 2025 08:14:19 +0100 Subject: [PATCH] Fix ann-bench dataset blob integer overflow leading to incorrect data copy beyond 4GB --- cpp/bench/ann/src/common/blob.hpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/cpp/bench/ann/src/common/blob.hpp b/cpp/bench/ann/src/common/blob.hpp index 81310ae0b..3a51372cf 100644 --- a/cpp/bench/ann/src/common/blob.hpp +++ b/cpp/bench/ann/src/common/blob.hpp @@ -453,7 +453,8 @@ struct blob_mmap { size_t size = data_end - data_start; mmap_owner owner{size, flags}; std::fseek(file_.descriptor().value(), data_start, SEEK_SET); - size_t n_elems = file_.rows_limit() * file_.n_cols(); + auto n_elems = + static_cast(file_.rows_limit()) * static_cast(file_.n_cols()); if (std::fread(owner.data(), sizeof(T), n_elems, file_.descriptor().value()) != n_elems) { throw std::runtime_error{"cuvs::bench::blob_mmap() fread " + file_.path() + " failed"}; }