diff --git a/sanitizers/suppressions/asan.supp b/sanitizers/suppressions/asan.supp index 73a44f3b71..75436e27eb 100644 --- a/sanitizers/suppressions/asan.supp +++ b/sanitizers/suppressions/asan.supp @@ -7,6 +7,7 @@ # - stack-use-after-return errors # - stack-use-after-scope errors # - stack-buffer-overflow errors in seemingly unrelated code (e.g., std::chrono::steady_clock::now()) +# - stack-buffer-underflow errors in seemingly unrelated code (e.g., xxhasher::retrieveHash(), clock_gettime) # # These are suppressed via: # 1. Runtime option: detect_stack_use_after_return=0 (in ASAN_OPTIONS in CI workflow) diff --git a/sanitizers/suppressions/sanitizer-ignorelist.txt b/sanitizers/suppressions/sanitizer-ignorelist.txt index 5dbead48a2..278b843168 100644 --- a/sanitizers/suppressions/sanitizer-ignorelist.txt +++ b/sanitizers/suppressions/sanitizer-ignorelist.txt @@ -27,3 +27,8 @@ src:core/JobQueue.cpp src:libxrpl/beast/utility/beast_Journal.cpp src:test/beast/beast_PropertyStream_test.cpp src:src/test/app/Invariants_test.cpp + +# Boost coroutines cause false positive stack-buffer-underflow in xxhasher +# This is a known ASAN limitation with stackful coroutines +# See: https://github.com/google/sanitizers/issues/189 +src:beast/hash/xxhasher.h diff --git a/sanitizers/suppressions/ubsan.supp b/sanitizers/suppressions/ubsan.supp index dc821f8d30..a5faf565af 100644 --- a/sanitizers/suppressions/ubsan.supp +++ b/sanitizers/suppressions/ubsan.supp @@ -129,6 +129,7 @@ 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 diff --git a/src/libxrpl/json/json_value.cpp b/src/libxrpl/json/json_value.cpp index b738774d79..5da1da7c42 100644 --- a/src/libxrpl/json/json_value.cpp +++ b/src/libxrpl/json/json_value.cpp @@ -198,17 +198,17 @@ Value::Value(ValueType type) : type_(type), allocated_(0) } } -Value::Value(Int value) : type_(intValue) +Value::Value(Int value) : type_(intValue), allocated_(0) { value_.int_ = value; } -Value::Value(UInt value) : type_(uintValue) +Value::Value(UInt value) : type_(uintValue), allocated_(0) { value_.uint_ = value; } -Value::Value(double value) : type_(realValue) +Value::Value(double value) : type_(realValue), allocated_(0) { value_.real_ = value; } @@ -236,7 +236,7 @@ Value::Value(StaticString const& value) : type_(stringValue), allocated_(false) value_.string_ = const_cast(value.c_str()); } -Value::Value(bool value) : type_(booleanValue) +Value::Value(bool value) : type_(booleanValue), allocated_(0) { value_.bool_ = value; }