From 82b9ea8a0985feecde31de2bbe49d3ac412c4408 Mon Sep 17 00:00:00 2001 From: Kazufumi NOTO <noto.kazufumi@gmail.com> Date: Tue, 19 Mar 2019 02:16:42 +0900 Subject: [PATCH] fs: Fix incorrect size report on 32bit machines (#1699) Cast before multiplication to avoid overflow. Fixes #743 --- src/modules/fs.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/modules/fs.cpp b/src/modules/fs.cpp index cb5df8bf..62d545f4 100644 --- a/src/modules/fs.cpp +++ b/src/modules/fs.cpp @@ -97,10 +97,10 @@ namespace modules { mount->fsname = details->at(MOUNTINFO_FSNAME); // see: http://en.cppreference.com/w/cpp/filesystem/space - mount->bytes_total = buffer.f_frsize * buffer.f_blocks; - mount->bytes_free = buffer.f_frsize * buffer.f_bfree; + mount->bytes_total = static_cast<uint64_t>(buffer.f_frsize) * static_cast<uint64_t>(buffer.f_blocks); + mount->bytes_free = static_cast<uint64_t>(buffer.f_frsize) * static_cast<uint64_t>(buffer.f_bfree); mount->bytes_used = mount->bytes_total - mount->bytes_free; - mount->bytes_avail = buffer.f_frsize * buffer.f_bavail; + mount->bytes_avail = static_cast<uint64_t>(buffer.f_frsize) * static_cast<uint64_t>(buffer.f_bavail); mount->percentage_free = math_util::percentage<double>(mount->bytes_avail, mount->bytes_used + mount->bytes_avail); mount->percentage_used = math_util::percentage<double>(mount->bytes_used, mount->bytes_used + mount->bytes_avail);