mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-06-21 14:22:38 +02:00
Merge #18126: tests: Add fuzzing harness testing the locale independence of the strencodings.h functions
259e290db8f784dba75979acf16e7964af63445c tests: Add fuzzing harness for locale independence testing (practicalswift) Pull request description: Context: [C and C++ locale assumptions in bitcoind and bitcoin-qt](https://github.com/bitcoin/bitcoin/pull/18124) Add fuzzing harness for locale independence testing of functions in `strencodings.h` and `tinyformat.h`. Test this PR using: ``` $ make distclean $ ./autogen.sh $ CC=clang CXX=clang++ ./configure --enable-fuzz \ --with-sanitizers=address,fuzzer,undefined $ make $ src/test/fuzz/locale … ``` The tested functions (`ParseInt32(…)`, `ParseInt64(…)`, `atoi(const std::string&)`, `atoi64(const std::string& str)`, `i64tostr(const char*)`, `itostr(…)`, `strprintf(…)`) all call locale dependent functions (such as `strtol(…)`, `strtoll(…)`, `atoi(const char*)`, etc.) but are assumed to do so in a way that the tested functions return same results regardless of the chosen C locale (`setlocale`). This fuzzer aims to test that those assumptions hold up also in practice now and over time. Top commit has no ACKs. Tree-SHA512: d108d2f85aa6f482839dafbc7579465ffd4bacf7bc52835ad0fbaa1c71aed9b3870c83447b3d453a03b9ce307e76a3cfdd350a0c77024ab094c93c7d62c8a527
This commit is contained in:
commit
45cdcd47d9
@ -37,6 +37,7 @@ FUZZ_TARGETS = \
|
||||
test/fuzz/inv_deserialize \
|
||||
test/fuzz/key \
|
||||
test/fuzz/key_origin_info_deserialize \
|
||||
test/fuzz/locale \
|
||||
test/fuzz/merkle_block_deserialize \
|
||||
test/fuzz/messageheader_deserialize \
|
||||
test/fuzz/netaddr_deserialize \
|
||||
@ -443,6 +444,12 @@ test_fuzz_key_origin_info_deserialize_LDADD = $(FUZZ_SUITE_LD_COMMON)
|
||||
test_fuzz_key_origin_info_deserialize_LDFLAGS = $(RELDFLAGS) $(AM_LDFLAGS) $(LIBTOOL_APP_LDFLAGS)
|
||||
test_fuzz_key_origin_info_deserialize_SOURCES = $(FUZZ_SUITE) test/fuzz/deserialize.cpp
|
||||
|
||||
test_fuzz_locale_CPPFLAGS = $(AM_CPPFLAGS) $(BITCOIN_INCLUDES)
|
||||
test_fuzz_locale_CXXFLAGS = $(AM_CXXFLAGS) $(PIE_FLAGS)
|
||||
test_fuzz_locale_LDADD = $(FUZZ_SUITE_LD_COMMON)
|
||||
test_fuzz_locale_LDFLAGS = $(RELDFLAGS) $(AM_LDFLAGS) $(LIBTOOL_APP_LDFLAGS)
|
||||
test_fuzz_locale_SOURCES = $(FUZZ_SUITE) test/fuzz/locale.cpp
|
||||
|
||||
test_fuzz_merkle_block_deserialize_CPPFLAGS = $(AM_CPPFLAGS) $(BITCOIN_INCLUDES) -DMERKLE_BLOCK_DESERIALIZE=1
|
||||
test_fuzz_merkle_block_deserialize_CXXFLAGS = $(AM_CXXFLAGS) $(PIE_FLAGS)
|
||||
test_fuzz_merkle_block_deserialize_LDADD = $(FUZZ_SUITE_LD_COMMON)
|
||||
|
96
src/test/fuzz/locale.cpp
Normal file
96
src/test/fuzz/locale.cpp
Normal file
File diff suppressed because one or more lines are too long
@ -22,6 +22,7 @@ KNOWN_VIOLATIONS=(
|
||||
"src/test/blockchain_tests.cpp.*std::to_string"
|
||||
"src/test/dbwrapper_tests.cpp:.*snprintf"
|
||||
"src/test/denialofservice_tests.cpp.*std::to_string"
|
||||
"src/test/fuzz/locale.cpp"
|
||||
"src/test/fuzz/parse_numbers.cpp:.*atoi"
|
||||
"src/test/key_tests.cpp.*std::to_string"
|
||||
"src/test/net_tests.cpp.*std::to_string"
|
||||
|
Loading…
x
Reference in New Issue
Block a user