From 42ba3997d64591822411fbbedd51a240dbbb5fab Mon Sep 17 00:00:00 2001 From: "José M. Guisado" Date: Wed, 18 Sep 2019 13:28:29 +0200 Subject: Check memunit parsing for overflow in confparse MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Before, when parsing memunits, if overflow occured it failed silently. Use nowrap u64 math to detect overflow, compare to INT64_MAX and if greater tell user and fail accordingly. 15000000.5 TB fails double check as it a greater floating number than (double)INT64_MAX 8388608.1 TB passes double check because it falls in the same value as (double)INT64_MAX (which is 2^63), but will fail the int check because (uint64_t)d, which is 2^63, is strictly greater than 2^63-1 (INT64_MAX). Fixes #30920 Signed-off-by: José M. Guisado --- src/lib/confmgt/.may_include | 1 + 1 file changed, 1 insertion(+) (limited to 'src/lib/confmgt/.may_include') diff --git a/src/lib/confmgt/.may_include b/src/lib/confmgt/.may_include index 2564133917..5ff949f103 100644 --- a/src/lib/confmgt/.may_include +++ b/src/lib/confmgt/.may_include @@ -4,6 +4,7 @@ lib/conf/*.h lib/confmgt/*.h lib/container/*.h lib/encoding/*.h +lib/intmath/*.h lib/log/*.h lib/malloc/*.h lib/string/*.h -- cgit v1.2.3-54-g00ecf