From 6da142c7c51f52c5b40ffc9110f9d83e75bdcf65 Mon Sep 17 00:00:00 2001 From: bscout9956 Date: Wed, 6 Nov 2024 00:26:30 -0300 Subject: [PATCH] Prevent percentage memory calculation from overflowing --- src/limits/Misc/MemoryAvailable.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/limits/Misc/MemoryAvailable.cpp b/src/limits/Misc/MemoryAvailable.cpp index 50c7b29..7f09d04 100644 --- a/src/limits/Misc/MemoryAvailable.cpp +++ b/src/limits/Misc/MemoryAvailable.cpp @@ -23,7 +23,8 @@ struct MemoryLimit : public SimpleAdjuster MEMORYSTATUSEX sysmem = { sizeof(sysmem) }; if(GlobalMemoryStatusEx(&sysmem)) { - memory = uint32_t(sysmem.ullTotalPhys * std::stoul(value.substr(0, value.size() - 1)) / 100); + auto calcmem = sysmem.ullTotalPhys * (std::stoul(value.substr(0, value.size() - 1)) / 100.0); + memory = calcmem > UINT32_MAX ? UINT32_MAX : uint32_t(calcmem); // use the maximum value of uint32_t (if the calculated value exceeds the capacity) } } else