bitcoin/src/test/fuzz
fanquake 6af9b31bfc
Merge #19107: p2p: Move all header verification into the network layer, extend logging
deb52711a1 Remove header checks out of net_processing (Troy Giorshev)
52d4ae46ab Give V1TransportDeserializer CChainParams& member (Troy Giorshev)
5bceef6b12 Change CMessageHeader Constructor (Troy Giorshev)
1ca20c1af8 Add doxygen comment for ReceiveMsgBytes (Troy Giorshev)
890b1d7c2b Move checksum check from net_processing to net (Troy Giorshev)
2716647ebf Give V1TransportDeserializer an m_node_id member (Troy Giorshev)

Pull request description:

  Inspired by #15206 and #15197, this PR moves all message header verification from the message processing layer and into the network/transport layer.

  In the previous PRs there is a change in behavior, where we would disconnect from peers upon a single failed checksum check.  In various discussions there was concern over whether this was the right choice, and some expressed a desire to see how this would look if it was made to be a pure refactor.

  For more context, see https://bitcoincore.reviews/15206.html#l-81.

  This PR improves the separation between the p2p layers, helping improvements like [BIP324](https://github.com/bitcoin/bitcoin/pull/18242) and #18989.

ACKs for top commit:
  ryanofsky:
    Code review ACK deb52711a1 just rebase due to conflict on adjacent line
  jnewbery:
    Code review ACK deb52711a1.

Tree-SHA512: 1a3b7ae883b020cfee1bef968813e04df651ffdad9dd961a826bd80654f2c98676ce7f4721038a1b78d8790e4cebe8060419e3d8affc97ce2b9b4e4b72e6fa9f
2020-09-29 16:14:40 +08:00
..
addition_overflow.cpp tests: Add fuzzing harness for AdditionOverflow(...) 2020-04-08 14:45:27 +00:00
addrdb.cpp fuzz: fix unused variable addrdb compiler warning 2020-07-19 08:31:34 +02:00
asmap.cpp net: change CNetAddr::ip to have flexible size 2020-08-24 21:50:59 +02:00
asmap_direct.cpp Switch from Optional<T> to std::optional<T> (C++17). Run clang-format. 2020-05-14 18:52:57 +00:00
autofile.cpp tests: Add fuzzing harness for CAutoFile (streams.h) 2020-07-15 11:41:21 +00:00
banman.cpp tests: Add fuzzing harness for BanMan 2020-07-08 05:31:43 +00:00
base_encode_decode.cpp scripted-diff: Bump copyright headers 2020-04-16 13:33:09 -04:00
bech32.cpp tests: Add fuzzing harness for Bech32 encoding/decoding 2019-11-05 09:23:44 +00:00
block.cpp tests: Fill fuzzing coverage gaps for functions in consensus/validation.h 2020-05-14 18:45:42 +00:00
block_header.cpp Switch from Optional<T> to std::optional<T> (C++17). Run clang-format. 2020-05-14 18:52:57 +00:00
blockfilter.cpp Switch from Optional<T> to std::optional<T> (C++17). Run clang-format. 2020-05-14 18:52:57 +00:00
bloom_filter.cpp Switch from Optional<T> to std::optional<T> (C++17). Run clang-format. 2020-05-14 18:52:57 +00:00
buffered_file.cpp refactor: Drop unused CBufferedFile::Seek() 2020-07-26 22:46:28 +03:00
chain.cpp Switch from Optional<T> to std::optional<T> (C++17). Run clang-format. 2020-05-14 18:52:57 +00:00
checkqueue.cpp Switch from Optional<T> to std::optional<T> (C++17). Run clang-format. 2020-05-14 18:52:57 +00:00
coins_view.cpp rpc: gettxoutsetinfo can specify hash_type (only legacy option for now) 2020-06-22 00:55:44 +02:00
crypto.cpp tests: Add fuzzing harness for Keccak and SHA3_256 2020-09-10 14:54:30 +00:00
crypto_aes256.cpp tests: Add fuzzing harness for AES256Encrypt/AES256Decrypt 2020-06-25 15:06:13 +00:00
crypto_aes256cbc.cpp tests: Add fuzzing harness for AES256CBCEncrypt/AES256CBCDecrypt 2020-06-25 15:06:13 +00:00
crypto_chacha20.cpp tests: Add fuzzing harness for ChaCha20 2020-06-25 15:06:13 +00:00
crypto_chacha20_poly1305_aead.cpp tests: Add fuzzing harness for ChaCha20Poly1305AEAD 2020-06-25 15:06:13 +00:00
crypto_common.cpp tests: Add fuzzing harness for {Read,Write}{LE,BE}{16,32,64} (crypto/common.h) 2020-06-11 14:05:54 +00:00
crypto_hkdf_hmac_sha256_l32.cpp tests: Add fuzzing harness for CHKDF_HMAC_SHA256_L32 2020-06-25 15:06:13 +00:00
crypto_poly1305.cpp tests: Add fuzzing harness for poly1305_auth(...) 2020-06-25 15:06:13 +00:00
cuckoocache.cpp Switch from Optional<T> to std::optional<T> (C++17). Run clang-format. 2020-05-14 18:52:57 +00:00
decode_tx.cpp refactor: Replace HexStr(o.begin(), o.end()) with HexStr(o) 2020-06-24 18:41:45 +02:00
descriptor_parse.cpp scripted-diff: Bump copyright headers 2020-04-16 13:33:09 -04:00
deserialize.cpp Remove header checks out of net_processing 2020-09-22 22:05:18 -04:00
eval_script.cpp scripted-diff: Bump copyright headers 2020-04-16 13:33:09 -04:00
fee_rate.cpp tests: Add fuzzing harness for CFeeRate 2020-03-15 16:25:29 +00:00
fees.cpp Switch from Optional<T> to std::optional<T> (C++17). Run clang-format. 2020-05-14 18:52:57 +00:00
flatfile.cpp Switch from Optional<T> to std::optional<T> (C++17). Run clang-format. 2020-05-14 18:52:57 +00:00
float.cpp tests: Add fuzzing harness for functions taking floating-point types as input 2020-01-31 12:36:13 +00:00
fuzz.cpp tests: Provide main(...) function in fuzzer 2020-06-25 21:03:27 +00:00
fuzz.h tests: Allow for using non-default fuzzing initialization 2019-10-23 11:10:10 +00:00
FuzzedDataProvider.h tests: Update FuzzedDataProvider.h from upstream (LLVM) 2020-01-27 21:31:42 +00:00
golomb_rice.cpp Switch from Optional<T> to std::optional<T> (C++17). Run clang-format. 2020-05-14 18:52:57 +00:00
hex.cpp Switch from Optional<T> to std::optional<T> (C++17). Run clang-format. 2020-05-14 18:52:57 +00:00
http_request.cpp tests: Avoid fuzzer-specific nullptr dereference in libevent when handling PROXY requests 2020-06-02 11:53:08 +00:00
integer.cpp Merge #18413: script: prevent UB when computing abs value for num opcode serialize 2020-05-02 21:24:05 +08:00
key.cpp Make Hash[160] consume range-like objects 2020-07-30 13:57:54 -07:00
key_io.cpp fuzz: Add missing ECC_Start to key_io test 2020-03-11 15:16:54 -04:00
kitchen_sink.cpp refactor: Error message bilingual_str consistency 2020-06-09 15:39:44 +02:00
load_external_block_file.cpp tests: Add fuzzing harness for LoadExternalBlockFile(...) (validation.h) 2020-07-15 11:41:21 +00:00
locale.cpp util: remove unused c-string variant of atoi64() 2020-08-17 17:56:59 +02:00
merkleblock.cpp Switch from Optional<T> to std::optional<T> (C++17). Run clang-format. 2020-05-14 18:52:57 +00:00
message.cpp Switch from Optional<T> to std::optional<T> (C++17). Run clang-format. 2020-05-14 18:52:57 +00:00
multiplication_overflow.cpp tests: Don't assume presence of __builtin_mul_overflow in MultiplicationOverflow(...) fuzzing harness 2020-03-22 13:29:00 +00:00
net.cpp p2p: Unify Send and Receive protocol versions 2020-09-07 21:03:44 +03:00
net_permissions.cpp Add addr permission flag enabling non-cached addr sharing 2020-07-30 14:38:50 +03:00
netaddress.cpp net: change CNetAddr::ip to have flexible size 2020-08-24 21:50:59 +02:00
p2p_transport_deserializer.cpp Remove header checks out of net_processing 2020-09-22 22:05:18 -04:00
parse_hd_keypath.cpp tests: Add fuzzing coverage for FormatHDKeypath(...) and WriteHDKeypath(...) 2020-04-26 20:23:56 +00:00
parse_iso8601.cpp tests: Add fuzzing harness for ISO-8601 related functions 2019-10-30 13:32:29 +00:00
parse_numbers.cpp tests: Add fuzzing harnesses for various number parsing functions 2019-12-10 16:39:40 +00:00
parse_script.cpp tests: Add ParseScript(...) (core_io) fuzzing harness 2019-12-10 16:39:40 +00:00
parse_univalue.cpp scripted-diff: Bump copyright headers 2020-04-16 13:33:09 -04:00
policy_estimator.cpp tests: Add fuzzing harness for CBlockPolicyEstimator::{Read,Write} (policy/fees.h) 2020-07-15 11:41:21 +00:00
policy_estimator_io.cpp tests: Add fuzzing harness for CBlockPolicyEstimator::{Read,Write} (policy/fees.h) 2020-07-15 11:41:21 +00:00
pow.cpp Switch from Optional<T> to std::optional<T> (C++17). Run clang-format. 2020-05-14 18:52:57 +00:00
prevector.cpp Switch from Optional<T> to std::optional<T> (C++17). Run clang-format. 2020-05-14 18:52:57 +00:00
primitives_transaction.cpp Switch from Optional<T> to std::optional<T> (C++17). Run clang-format. 2020-05-14 18:52:57 +00:00
process_message.cpp p2p: Unify Send and Receive protocol versions 2020-09-07 21:03:44 +03:00
process_messages.cpp p2p: Unify Send and Receive protocol versions 2020-09-07 21:03:44 +03:00
protocol.cpp Switch from Optional<T> to std::optional<T> (C++17). Run clang-format. 2020-05-14 18:52:57 +00:00
psbt.cpp psbt: Allow both non_witness_utxo and witness_utxo 2020-06-24 16:31:42 -04:00
random.cpp tests: Add fuzzing harness for functions/classes in random.h 2020-03-29 13:17:04 +00:00
rbf.cpp Switch from Optional<T> to std::optional<T> (C++17). Run clang-format. 2020-05-14 18:52:57 +00:00
rolling_bloom_filter.cpp Switch from Optional<T> to std::optional<T> (C++17). Run clang-format. 2020-05-14 18:52:57 +00:00
script.cpp Replace usage of GetScriptForWitness with GetScriptForDestination 2020-08-14 08:44:42 +12:00
script_bitcoin_consensus.cpp tests: Add fuzzing harness for functions in script/bitcoinconsensus.h 2020-05-30 10:37:01 +00:00
script_descriptor_cache.cpp tests: Add fuzzing harness for functions in script/descriptor.h 2020-05-30 10:37:01 +00:00
script_flags.cpp scripted-diff: Bump copyright headers 2020-04-16 13:33:09 -04:00
script_interpreter.cpp tests: Add fuzzing harness for functions in script/interpreter.h 2020-05-30 10:37:01 +00:00
script_ops.cpp script: Remove undocumented and unused operator+ 2020-04-15 10:01:55 -04:00
script_sigcache.cpp tests: Add fuzzing harness for functions in script/sigcache.h 2020-05-30 10:37:01 +00:00
script_sign.cpp tests: Add fuzzing harness for functions in script/sign.h 2020-05-30 10:37:01 +00:00
scriptnum_ops.cpp fuzz: add missing overrides to signature_checker 2020-07-22 05:27:13 +02:00
secp256k1_ec_seckey_import_export_der.cpp tests: Add fuzzing harness for ec_seckey_import_der(...) and ec_seckey_export_der(...) 2020-08-18 18:03:57 +00:00
secp256k1_ecdsa_signature_parse_der_lax.cpp tests: Add fuzzing harness for SigHasLowR(...) and ecdsa_signature_parse_der_lax(...) 2020-08-18 18:03:56 +00:00
signature_checker.cpp fuzz: add missing overrides to signature_checker 2020-07-22 05:27:13 +02:00
signet.cpp fuzz: Remove needless guard 2020-09-22 22:32:18 +02:00
span.cpp Simplify usage of Span in several places 2020-05-12 14:19:40 -07:00
spanparsing.cpp Simplify usage of Span in several places 2020-05-12 14:19:40 -07:00
string.cpp tests: Fill fuzzing coverage gaps for functions in script/script.h, script/script_error.h and script/standard.h 2020-05-30 10:37:01 +00:00
strprintf.cpp tests: Fill fuzzing coverage gaps for functions in util/translation.h 2020-05-14 18:52:57 +00:00
system.cpp fuzz: fix vector size problem in system fuzzer 2020-05-08 20:21:48 +02:00
timedata.cpp tests: Add fuzzing harness for functions in timedata.h 2020-03-24 14:39:23 +00:00
transaction.cpp scripted-diff: Bump copyright headers 2020-04-16 13:33:09 -04:00
tx_in.cpp tests: Add fuzzing harness for various CTxIn related functions 2019-12-06 09:10:31 +00:00
tx_out.cpp tests: Add fuzzing harness for various CTxOut related functions 2019-12-06 09:10:44 +00:00
util.h net: change CNetAddr::ip to have flexible size 2020-08-24 21:50:59 +02:00