aboutsummaryrefslogtreecommitdiff
path: root/src/test/fuzz
AgeCommit message (Collapse)Author
2021-01-02fuzz: Use ConsumeNode in process_messages targetMarcoFalke
2021-01-02refactor: Remove nMyStartingHeight from CNode/ConnmanMarcoFalke
2021-01-02Merge #20210: net: assert CNode::m_inbound_onion is inbound in ctor, add ↵MarcoFalke
getter, unit tests 86c495223f048e5ca2cf0d8730af7db3b76f7aba net: add CNode::IsInboundOnion() public getter and unit tests (Jon Atack) 6609eb8cb50fe92c7317b5db9e72d4333b3aab1b net: assert CNode::m_inbound_onion is inbound in ctor (Jon Atack) 993d1ecd191a7d9161082d4026f020cbf00835bb test, fuzz: fix constructing CNode with invalid inbound_onion (Jon Atack) Pull request description: The goal of this PR is to be able to depend on `m_inbound_onion` in AttemptToEvictConnection in #20197: - asserts `CNode::m_inbound_onion` is inbound in the CNode ctor to have a validity check at the class boundary - fixes a unit test and a fuzz utility that were passing invalid inbound onion values to the CNode ctor - drops an unneeded check in `CNode::ConnectedThroughNetwork()` for its inbound status - adds a public getter `IsInboundOnion()` that also allows unit testing it - adds unit test coverage ACKs for top commit: sipa: utACK 86c495223f048e5ca2cf0d8730af7db3b76f7aba LarryRuane: ACK 86c495223f048e5ca2cf0d8730af7db3b76f7aba vasild: ACK 86c495223f048e5ca2cf0d8730af7db3b76f7aba MarcoFalke: review ACK 86c495223f048e5ca2cf0d8730af7db3b76f7aba 🐍 Tree-SHA512: 21109105bc4e5e03076fadd489204be00eac710c9de0127708ca2d0a10a048ff81f640f589a7429967ac3eb51d35fe24bb2b12e53e7aa3efbc47aaff6396d204
2020-12-31Merge #20813: scripted-diff: Bump copyright headersMarcoFalke
fa0074e2d82928016a43ca408717154a1c70a4db scripted-diff: Bump copyright headers (MarcoFalke) Pull request description: Needs to be done because no one has removed the years yet ACKs for top commit: practicalswift: ACK fa0074e2d82928016a43ca408717154a1c70a4db Tree-SHA512: 210e92acd7d400b556cf8259c3ec9967797420cfd19f0c2a4fa54cb2b3d32ad9ae27e771269201e7d554c0f4cd73a8b1c1a42c9f65d8685ca4d52e5134b071a3
2020-12-31scripted-diff: Bump copyright headersMarcoFalke
-BEGIN VERIFY SCRIPT- ./contrib/devtools/copyright_header.py update ./ -END VERIFY SCRIPT-
2020-12-31fuzz: Remove duplicate ALL_OUTPUT_TYPE arrayMarcoFalke
2020-12-31fuzz: Bump FuzzedDataProvider.hMarcoFalke
Latest version from https://raw.githubusercontent.com/llvm/llvm-project/70de7e0d9a95b7fcd7c105b06bd90fdf4e01f563/compiler-rt/include/fuzzer/FuzzedDataProvider.h
2020-12-29Merge #20377: fuzz: Fill various small fuzzing gapsMarcoFalke
4ddbcd0d9abe40cd387e63d8c4817e0fe36004dc fuzz: Add coverage for CDataStream consumer (practicalswift) 546a0764f3b701ee07f5a8d168e2a58fed6b46d5 fuzz: Fill various small fuzzing gaps (practicalswift) Pull request description: Fill various small fuzzing gaps. See [`doc/fuzzing.md`](https://github.com/bitcoin/bitcoin/blob/master/doc/fuzzing.md) for information on how to fuzz Bitcoin Core. Don't forget to contribute any coverage increasing inputs you find to the [Bitcoin Core fuzzing corpus repo](https://github.com/bitcoin-core/qa-assets). Happy fuzzing :) ACKs for top commit: MarcoFalke: review ACK 4ddbcd0d9abe40cd387e63d8c4817e0fe36004dc Tree-SHA512: d20f2cc0172f39948673846d088121782f39b4556df8b38fa14859cfa062c1519d18ee9601d4503ef1ba9613976cc5349c1fc0f0b9601a3d68127ffce1b1854e
2020-12-28fuzz: check that certain script TxoutType are nonstandardMichael Dietz
2020-12-27fuzz: Add coverage for CDataStream consumerpracticalswift
2020-12-27Merge #20674: fuzz: Call SendMessages after ProcessMessage to increase coveragefanquake
fa09f97beabafaaeb59fca710760578ff1f2e8d7 fuzz: Call SendMessages after ProcessMessage to increase coverage (MarcoFalke) Pull request description: ACKs for top commit: practicalswift: Tested ACK fa09f97beabafaaeb59fca710760578ff1f2e8d7 dhruv: tACK fa09f97 Crypt-iQ: cr ACK fa09f97beabafaaeb59fca710760578ff1f2e8d7 sipa: utACK fa09f97beabafaaeb59fca710760578ff1f2e8d7 Tree-SHA512: 87c52aa38f902c4f6c9c2380f486a3ab21edc0e21e48bb619cdb67cfd698154cc57b170eef31fc940c0bb2c878e155847de03fc6e4cd85bed25f10c4f80c747b
2020-12-25Merge #19972: fuzz: Add fuzzing harness for node eviction logicMarcoFalke
5a9ee0869b0b722ebfcdaabaefba6376522b2eeb tests: Add fuzzing harness for node eviction logic (practicalswift) Pull request description: Add fuzzing harness for node eviction logic. See [`doc/fuzzing.md`](https://github.com/bitcoin/bitcoin/blob/master/doc/fuzzing.md) for information on how to fuzz Bitcoin Core. Don't forget to contribute any coverage increasing inputs you find to the [Bitcoin Core fuzzing corpus repo](https://github.com/bitcoin-core/qa-assets). Happy fuzzing :) ACKs for top commit: MarcoFalke: cr ACK 5a9ee0869b0b722ebfcdaabaefba6376522b2eeb Tree-SHA512: c2401d22134867e23dab1ba94ae7ef36fdf52aa0588fdc4705d9cb765ddf979fd775fdf153ce2359f1bc1787cf60bf0ebcd47c7aa29c672e6a253fa58cac292d
2020-12-24fuzz: Check that NULL_DATA is unspendableMarcoFalke
2020-12-22fuzz: Add MuHash consistency fuzz testFabian Jahr
2020-12-21fuzz: Update FuzzedDataProvider.h from upstream (LLVM)practicalswift
Upstream revision: https://github.com/llvm/llvm-project/blob/6d0488f75bb2f37bcfe93fc8f59f6e78c9a0c939/compiler-rt/include/fuzzer/FuzzedDataProvider.h Changes: * [compiler-rt] FuzzedDataProvider: add ConsumeData and method. * [compiler-rt] Fix a typo in a comment in FuzzedDataProvider.h. * [compiler-rt] Add ConsumeRandomLengthString() version without arguments. * [compiler-rt] Refactor FuzzedDataProvider for better readability. * [compiler-rt] FuzzedDataProvider: make linter happy. * [compiler-rt] Mark FDP non-template methods inline to avoid ODR violations.
2020-12-21test: Add MuHash3072 fuzz testFabian Jahr
2020-12-20inline non-member functions with body in fuzzing headersPatrick Strateman
2020-12-17test, fuzz: fix constructing CNode with invalid inbound_onionJon Atack
as CNode ctor should only be passed inbound_onion = true when the connection is inbound
2020-12-17fuzz: replace CNode code with fuzz/util.h::ConsumeNode()Jon Atack
2020-12-16fuzz: Fill various small fuzzing gapspracticalswift
2020-12-16fuzz: Call SendMessages after ProcessMessage to increase coverageMarcoFalke
2020-12-16tests: Add fuzzing harness for node eviction logicpracticalswift
2020-12-15Merge #20560: fuzz: Link all targets onceMarcoFalke
fa13e1b0c52738492310b6b421d8e38cb04da5b1 build: Add option --enable-danger-fuzz-link-all (MarcoFalke) 44444ba759480237172d83f42374c5c29c76eda0 fuzz: Link all targets once (MarcoFalke) Pull request description: Currently the linker is invoked more than 150 times when compiling with `--enable-fuzz`. This is problematic for several reasons: * It wastes disk space north of 20 GB, as all libraries and sanitizers are linked more than 150 times * It wastes CPU time, as the link step can practically not be cached (similar to ccache for object files) * It makes it a blocker to compile the fuzz tests by default for non-fuzz builds #19388, for the aforementioned reasons * The build file is several thousand lines of code, without doing anything meaningful except listing each fuzz target in a highly verbose manner * It makes writing new fuzz tests unnecessarily hard, as build system knowledge is required; Compare that to boost unit tests, which can be added by simply editing an existing cpp file * It encourages fuzz tests that re-use the `buffer` or assume the `buffer` to be concatenations of seeds, which increases complexity of seeds and complexity for the fuzz engine to explore; Thus reducing the effectiveness of the affected fuzz targets Fixes #20088 ACKs for top commit: practicalswift: Tested ACK fa13e1b0c52738492310b6b421d8e38cb04da5b1 sipa: ACK fa13e1b0c52738492310b6b421d8e38cb04da5b1. Reviewed the code changes, and tested the 3 different test_runner.py modes (run once, merge, generate). I also tested building with the new --enable-danger-fuzz-link-all Tree-SHA512: 962ab33269ebd51810924c51266ecc62edd6ddf2fcd9a8c359ed906766f58c3f73c223f8d3cc49f2c60f0053f65e8bdd86ce9c19e673f8c2b3cd676e913f2642
2020-12-15Merge #20437: fuzz: Avoid time-based "non-determinism" in fuzzing harnesses ↵MarcoFalke
by using mocked GetTime() 8c09c0c1d18885ef94f79b3f2d073f43269bc95d fuzz: Avoid time-based "non-determinism" in fuzzing harnesses by using mocked GetTime() (practicalswift) Pull request description: Avoid time-based "non-determinism" in fuzzing harnesses by using mocked `GetTime()`. Prior to this commit the fuzzing harnesses `banman`, `connman`, `net` and `rbf` had time-based "non-determinism". `addrman` is fixed in #20425. `process_message` and `process_messages` are left to fix: simply using mock time is not enough for them due to interaction with `IsInitialBlockDownload()`. See [`doc/fuzzing.md`](https://github.com/bitcoin/bitcoin/blob/master/doc/fuzzing.md) for information on how to fuzz Bitcoin Core. Don't forget to contribute any coverage increasing inputs you find to the [Bitcoin Core fuzzing corpus repo](https://github.com/bitcoin-core/qa-assets). Happy fuzzing :) ACKs for top commit: MarcoFalke: review ACK 8c09c0c1d18885ef94f79b3f2d073f43269bc95d practicalswift: > review ACK [8c09c0c](https://github.com/bitcoin/bitcoin/commit/8c09c0c1d18885ef94f79b3f2d073f43269bc95d) Tree-SHA512: 32dfbead3dfd18cf4ff56dc2ea341aa977441b4e19a54879cf54fa5820c7e2b14b92c7e238d32fd785654f3b28cc82826ae66c03e94c292633c63c41196ba9a8
2020-12-14build: Add option --enable-danger-fuzz-link-allMarcoFalke
2020-12-13net: remove SetMaxOutboundTimeframefanquake
This was introduced in 872fee3fccc8b33b9af0a401b5f85ac5504b57eb and it's unclear if it's ever been used.
2020-12-13net: remove SetMaxOutboundTargetfanquake
This has been unused since f3552da81393a8e78ce3e2afed0b9c9d1ff5cee0.
2020-12-13Merge #20588: Remove unused and confusing CTransaction constructorfanquake
fac39c198324715565897f4240709340477af0bf wallet: document that tx in CreateTransaction is purely an out-param (MarcoFalke) faac31521bb7ecbf999541cf918d3750ff589de4 Remove unused and confusing CTransaction constructor (MarcoFalke) Pull request description: The constructor is confusing and dangerous (as explained in the TODO), fix that by removing it. ACKs for top commit: laanwj: Code review ACK fac39c198324715565897f4240709340477af0bf promag: Code review ACK fac39c198324715565897f4240709340477af0bf. theStack: Code review ACK fac39c198324715565897f4240709340477af0bf Tree-SHA512: e0c8cffce8d8ee0166b8e1cbfe85ed0657611e26e2af0d69fde70eceaa5d75cbde3eb489af0428fe4fc431360b4c791fb1cc21b8dee7d4c7a4f17df00836229d
2020-12-10Simplify and clarify extra outbound peer countingSuhas Daftuar
2020-12-10fuzz: Link all targets onceMarcoFalke
2020-12-07Remove unused and confusing CTransaction constructorMarcoFalke
2020-12-04net: Assume that SetCommonVersion is called at most once per peerMarcoFalke
2020-12-01refactor: Improve use of explicit keywordFabian Jahr
2020-12-01fuzz: Avoid time-based "non-determinism" in fuzzing harnesses by using ↵practicalswift
mocked GetTime()
2020-12-01Merge #20425: fuzz: Make CAddrMan fuzzing harness deterministicMarcoFalke
17a5f172fa9ec509b1c3f950ee8dfb6f025534d2 fuzz: Make addrman fuzzing harness deterministic (practicalswift) Pull request description: Make `CAddrMan` fuzzing harness deterministic. See [`doc/fuzzing.md`](https://github.com/bitcoin/bitcoin/blob/master/doc/fuzzing.md) for information on how to fuzz Bitcoin Core. Don't forget to contribute any coverage increasing inputs you find to the [Bitcoin Core fuzzing corpus repo](https://github.com/bitcoin-core/qa-assets). Happy fuzzing :) ACKs for top commit: Crypt-iQ: utACK 17a5f172fa9ec509b1c3f950ee8dfb6f025534d2 Tree-SHA512: 725f983745233e9b616782247fa18847e483c074ca4336a5beea8a9009128c3a74b4d50a12662d8ca2177c2e1fc5fc121834df6b459ac0af43c931d77ef7c4d8
2020-11-30Merge #20499: Remove obsolete NODISCARD ifdef forest. Use [[nodiscard]] (C++17).MarcoFalke
79bff8e48aca961ec271b0d592aca9278b981e2f Remove NODISCARD (practicalswift) 4848e711076c6ebc5d841feb83baeb6d2bc76c94 scripted-diff: Use [[nodiscard]] (C++17) instead of NODISCARD (practicalswift) Pull request description: Remove obsolete `NODISCARD` `ifdef` forest. Use `[[nodiscard]]` (C++17). ACKs for top commit: theStack: ACK 79bff8e48aca961ec271b0d592aca9278b981e2f fanquake: ACK 79bff8e48aca961ec271b0d592aca9278b981e2f Tree-SHA512: 56dbb8e50ed97ecfbce28cdc688a01146108acae49a943e338a8f983f7168914710d36e38632f6a7c200ba6c6ac35b2519e97d6c985e8e7eb23223f13bf985d6
2020-11-26scripted-diff: Use [[nodiscard]] (C++17) instead of NODISCARDpracticalswift
-BEGIN VERIFY SCRIPT- sed -i "s/NODISCARD/[[nodiscard]]/g" $(git grep -l "NODISCARD" ":(exclude)src/bench/nanobench.h" ":(exclude)src/attributes.h") -END VERIFY SCRIPT-
2020-11-25Drop noop gcc version checksHennadii Stepanov
Since #20413 the minimum required GCC version is 7. Co-authored-by: practicalswift <practicalswift@users.noreply.github.com>
2020-11-23refactor: Drop CDataStream constructors in favor of one taking a Span of bytesMarcoFalke
2020-11-20net: Treat raw message bytes as uint8_tMarcoFalke
2020-11-20Merge #20056: net: Use Span in ReceiveMsgBytesWladimir J. van der Laan
fa5ed3b4ca609426b2622cad235e107d33db7b30 net: Use Span in ReceiveMsgBytes (MarcoFalke) Pull request description: Pass a data pointer and a size as span in `ReceiveMsgBytes` to get the benefits of a span ACKs for top commit: jonatack: ACK fa5ed3b4ca609426b2622cad235e107d33db7b30 code review, rebased to current master 12a1c3ad1a43634, debug build, unit tests, ran bitcoind/-netinfo/getpeerinfo theStack: ACK fa5ed3b4ca609426b2622cad235e107d33db7b30 Tree-SHA512: 89bf111323148d6e6e50185ad20ab39f73ab3a58a27e46319e3a08bcf5dcf9d6aa84faff0fd6afb90cb892ac2f557a237c144560986063bc736a69ace353ab9d
2020-11-19fuzz: Make addrman fuzzing harness deterministicpracticalswift
2020-11-12fuzz: Use ConsumeRandomLengthBitVector(...) in src/test/fuzz/connman and ↵practicalswift
src/test/fuzz/net
2020-11-12tests: Add fuzzing harness for CAddrManpracticalswift
2020-11-12Merge #20188: tests: Add fuzzing harness for CConnmanMarcoFalke
79ef8324d4c85ed16a304e98805724b8a59022ac tests: Add fuzzing harness for CConnman (practicalswift) Pull request description: Add fuzzing harness for `CConnman`. See [`doc/fuzzing.md`](https://github.com/bitcoin/bitcoin/blob/master/doc/fuzzing.md) for information on how to fuzz Bitcoin Core. Don't forget to contribute any coverage increasing inputs you find to the [Bitcoin Core fuzzing corpus repo](https://github.com/bitcoin-core/qa-assets). Happy fuzzing :) ACKs for top commit: MarcoFalke: review ACK 79ef8324d4c85ed16a304e98805724b8a59022ac Tree-SHA512: eb9ffae20e939b818f8b9def064544b9a8fcd127ca22d1a54af1afedf1d24143be42419f3a03d684be59a5ff07b29d8bfa34ef2aaf1d9f9f75c4c1aaa90a29a8
2020-11-11fuzz: Improve coverage for CPartialMerkleTree fuzzing harnesspracticalswift
2020-11-10Merge #20332: test: Mock IBD in net_processing fuzzersMarcoFalke
fa4234d877ea3193bfd0e18ff68dcb8fb84b47b5 test: Mock IBD in net_processing fuzzers (MarcoFalke) Pull request description: Without this the fuzzers fail to detect trivial crasher bugs, such as https://github.com/bitcoin/bitcoin/pull/20317#issuecomment-723047111 ACKs for top commit: practicalswift: Tested ACK fa4234d877ea3193bfd0e18ff68dcb8fb84b47b5 Tree-SHA512: ce5da5c0a604b7559805a98ffdde882b44ca4f91b003b493d6e1be230714ce4cccb11dbfc1fc175f9d8fc779551c0a4103ceb4b473552928207d7d78ae329e10
2020-11-09fuzz: Assert roundtrip equality for both addrv1 and addrv2 versions of CServicepracticalswift
2020-11-09fuzz: Check for addrv1 compatibility before using addrv1 ↵practicalswift
serializer/deserializer on CSubNet
2020-11-07test: Mock IBD in net_processing fuzzersMarcoFalke