From d34b100c137ac931379ae5e1b888f16a9c8d6c72 Mon Sep 17 00:00:00 2001 From: Charles Schlosser Date: Wed, 27 Nov 2024 19:32:14 +0000 Subject: [PATCH] Fix UB in setZero --- Eigen/src/Core/Fill.h | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/Eigen/src/Core/Fill.h b/Eigen/src/Core/Fill.h index 048b51d98..e7ddf7f1a 100644 --- a/Eigen/src/Core/Fill.h +++ b/Eigen/src/Core/Fill.h @@ -80,11 +80,14 @@ struct eigen_zero_impl { static constexpr size_t max_bytes = (std::numeric_limits::max)(); static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void run(Xpr& dst) { const size_t num_bytes = dst.size() * sizeof(Scalar); + if (num_bytes == 0) return; + void* dst_ptr = static_cast(dst.data()); #ifndef EIGEN_NO_DEBUG if (num_bytes > max_bytes) throw_std_bad_alloc(); + eigen_assert((dst_ptr != nullptr) && "null pointer dereference error!"); #endif EIGEN_USING_STD(memset); - memset(dst.data(), 0, num_bytes); + memset(dst_ptr, 0, num_bytes); } };