From 0aea1a6a6cc631adf46fe55ba95bbf0839ec632c Mon Sep 17 00:00:00 2001 From: Alexander Bengtsson Date: Wed, 18 Dec 2024 13:14:32 +0100 Subject: [PATCH] MLBEDSW-10125: Fix integer overflow in DataTypeStorageSizeBytes Change-Id: I2f9a751d7b8b2b5ef271e3d78e281701f6dafbea Signed-off-by: Alexander Bengtsson --- ethosu/regor/common/data_type.hpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/ethosu/regor/common/data_type.hpp b/ethosu/regor/common/data_type.hpp index f7d9a2c1..4d7b1f0a 100644 --- a/ethosu/regor/common/data_type.hpp +++ b/ethosu/regor/common/data_type.hpp @@ -21,6 +21,7 @@ #include #include +#include #include namespace regor @@ -196,7 +197,9 @@ inline constexpr int DataTypeStorageSizeBytes(DataType type, int elements) const int storageBits = DataTypeStorageSizeBits(type); const int bits = IsPacked(type) ? DataTypeSizeBits(type) : storageBits; assert(storageBits >= 8); - return (((elements * bits) + storageBits - 1) / storageBits) * (storageBits / 8); + int64_t result = (((int64_t(elements) * bits) + storageBits - 1) / storageBits) * (storageBits / 8); + assert(result < std::numeric_limits::max()); + return int(result); } -- GitLab