mirror of
https://github.com/bitcoin/bitcoin.git
synced 2026-06-11 23:30:05 +02:00
Introduces a libFuzzer harness that exercises CDBWrapper operations against a std::map oracle, with a DeterministicEnv that captures LevelDB background compaction for single-threaded determinism. A sibling dbwrapper_threaded target uses a bare memenv so LevelDB's real background thread runs, exercising force_compact and threaded compaction paths that the deterministic variant cannot reach. Adds an implicit-integer-sign-change suppression for BytewiseComparatorImpl::FindShortSuccessor (leveldb/util/comparator.cc:58) to the test ubsan suppressions list. LevelDB's bytewise comparator implicitly converts a signed `char` byte to `uint8_t` there. The path is only reached when compaction picks an SST boundary key, so it requires a small enough max_file_size for compaction to fire during the fuzz run. Co-authored-by: l0rinc <pap.lorinc@gmail.com>
72 lines
3.0 KiB
Plaintext
72 lines
3.0 KiB
Plaintext
# Suppressions should use `sanitize-type:ClassName::MethodName`.
|
|
|
|
# -fsanitize=undefined suppressions
|
|
# =================================
|
|
|
|
# -fsanitize=integer suppressions
|
|
# ===============================
|
|
# Suppressions in dependencies that are developed outside this repository.
|
|
# ------------
|
|
|
|
unsigned-integer-overflow:*/include/c++/
|
|
unsigned-integer-overflow:FuzzedDataProvider::ConsumeIntegralInRange
|
|
unsigned-integer-overflow:leveldb/
|
|
unsigned-integer-overflow:minisketch/
|
|
unsigned-integer-overflow:secp256k1/
|
|
unsigned-integer-overflow:test/fuzz/crypto_diff_fuzz_chacha20.cpp
|
|
implicit-integer-sign-change:*/include/boost/
|
|
implicit-integer-sign-change:*/include/c++/
|
|
implicit-integer-sign-change:*/new_allocator.h
|
|
implicit-integer-sign-change:*/qarraydata.h
|
|
implicit-integer-sign-change:crc32c/
|
|
implicit-integer-sign-change:BytewiseComparatorImpl::FindShortSuccessor
|
|
implicit-integer-sign-change:minisketch/
|
|
implicit-integer-sign-change:secp256k1/
|
|
implicit-signed-integer-truncation:*/include/c++/
|
|
implicit-signed-integer-truncation:leveldb/
|
|
implicit-signed-integer-truncation:secp256k1/
|
|
implicit-signed-integer-truncation,implicit-integer-sign-change:secp256k1_modinv64_posdivsteps_62_var
|
|
implicit-unsigned-integer-truncation:*/include/c++/
|
|
implicit-unsigned-integer-truncation:leveldb/
|
|
implicit-unsigned-integer-truncation:secp256k1/
|
|
implicit-unsigned-integer-truncation:test/fuzz/crypto_diff_fuzz_chacha20.cpp
|
|
shift-base:*/include/c++/
|
|
shift-base:leveldb/
|
|
shift-base:minisketch/
|
|
shift-base:secp256k1/
|
|
shift-base:test/fuzz/crypto_diff_fuzz_chacha20.cpp
|
|
|
|
# Suppressions in code developed inside this repository.
|
|
# ------------
|
|
# Unsigned integer overflow occurs when the result of an unsigned integer
|
|
# computation cannot be represented in its type. Unlike signed integer overflow,
|
|
# this is not undefined behavior, but it is often unintentional. The list below
|
|
# contains files in which we expect unsigned integer overflows to occur. The
|
|
# list is used to suppress -fsanitize=integer warnings when running UBSan
|
|
# locally or in CI.
|
|
unsigned-integer-overflow:arith_uint256.h
|
|
unsigned-integer-overflow:CBloomFilter::Hash
|
|
unsigned-integer-overflow:CRollingBloomFilter::insert
|
|
unsigned-integer-overflow:RollingBloomHash
|
|
unsigned-integer-overflow:CompressAmount
|
|
unsigned-integer-overflow:DecompressAmount
|
|
unsigned-integer-overflow:crypto/
|
|
unsigned-integer-overflow:MurmurHash3
|
|
unsigned-integer-overflow:TxConfirmStats::EstimateMedianVal
|
|
unsigned-integer-overflow:InsecureRandomContext::rand64
|
|
unsigned-integer-overflow:InsecureRandomContext::SplitMix64
|
|
unsigned-integer-overflow:bitset_detail::PopCount
|
|
implicit-integer-sign-change:compressor.h
|
|
implicit-integer-sign-change:crypto/
|
|
implicit-integer-sign-change:TxConfirmStats::removeTx
|
|
implicit-integer-sign-change:EvalScript
|
|
implicit-signed-integer-truncation:crypto/
|
|
implicit-unsigned-integer-truncation:crypto/
|
|
shift-base:arith_uint256.cpp
|
|
shift-base:crypto/
|
|
shift-base:streams.h
|
|
shift-base:FormatHDKeypath
|
|
shift-base:InsecureRandomContext::rand64
|
|
shift-base:RandomMixin<*>::randbits
|
|
shift-base:RandomMixin<*>::randbits<*>
|