From b292d117978dec212f37ceb57264b7d626330e0d Mon Sep 17 00:00:00 2001 From: Pratik Mankawde <3397372+pratikmankawde@users.noreply.github.com> Date: Mon, 27 Jul 2026 15:55:20 +0100 Subject: [PATCH] minor missed check Signed-off-by: Pratik Mankawde <3397372+pratikmankawde@users.noreply.github.com> --- src/libxrpl/protocol/IOUAmount.cpp | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/libxrpl/protocol/IOUAmount.cpp b/src/libxrpl/protocol/IOUAmount.cpp index 987bb37ac9..1b3e5b3737 100644 --- a/src/libxrpl/protocol/IOUAmount.cpp +++ b/src/libxrpl/protocol/IOUAmount.cpp @@ -52,6 +52,18 @@ IOUAmount::normalize() } std::tie(mantissa_, exponent_) = Number::normalizeToRange(mantissa_, exponent_); + + // normalizeToRange only enforces Number's much wider exponent bounds. + // Re-apply IOUAmount's narrower range here, matching the check + // IOUAmount(Number const&) applies on its own construction path. + if (exponent_ > kMaxExponent) + { + Throw("value overflow"); + } + if (exponent_ < kMinExponent) + { + *this = beast::kZero; + } } IOUAmount::IOUAmount(Number const& other) : IOUAmount(fromNumber(other))