Signed-off-by: Pratik Mankawde <3397372+pratikmankawde@users.noreply.github.com>
This commit is contained in:
Pratik Mankawde
2026-01-23 17:13:03 +00:00
parent b32a5f2c08
commit 7dd4dbe285
5 changed files with 13 additions and 5 deletions

View File

@@ -733,8 +733,12 @@ Number::normalizeToRange(T minMantissa, T maxMantissa) const
"Number is non-negative for unsigned range.");
Number::normalize(negative, mantissa, exponent, minMantissa, maxMantissa);
auto const sign = negative ? -1 : 1;
return std::make_pair(static_cast<T>(sign * mantissa), exponent);
// Cast mantissa to signed type first to avoid unsigned integer overflow
// when multiplying by negative sign
T signedMantissa = static_cast<T>(mantissa);
if (negative)
signedMantissa = -signedMantissa;
return std::make_pair(signedMantissa, exponent);
}
inline constexpr Number

View File

@@ -21,3 +21,8 @@
# Boost - false positives from stackful coroutines
interceptor_name:boost
interceptor_name:clock_gettime
interceptor_name:memcpy
interceptor_name:__bzero
interceptor_name:__asan_memset
interceptor_name:__asan_memcpy

View File

@@ -129,7 +129,6 @@ unsigned-integer-overflow:string_view
# runtime error: unsigned integer overflow: 0 - 1 cannot be represented in type 'std::size_t' (aka 'unsigned long')
unsigned-integer-overflow:src/libxrpl/basics/base64.cpp
unsigned-integer-overflow:src/libxrpl/basics/Number.cpp
unsigned-integer-overflow:src/libxrpl/basics/Number.h
unsigned-integer-overflow:src/libxrpl/crypto/RFC1751.cpp
unsigned-integer-overflow:rc/libxrpl/json/json_value.cpp
unsigned-integer-overflow:src/libxrpl/ledger/ApplyView.cpp

View File

@@ -71,7 +71,7 @@ make_name(std::string const& object, std::string const& field)
if (field.empty())
return object;
return object + "." + field;
return {object + "." + field};
}
static inline Json::Value

View File

@@ -156,7 +156,7 @@ private:
std::vector<std::string> emptyCfgKeys;
struct publisher
{
publisher(FetchListConfig const& c) : cfg{c}
publisher(FetchListConfig const& c) : cfg{c}, isRetry{false}
{
}
std::shared_ptr<TrustedPublisherServer> server;