From faacb7eadb04a8af666e7bb59bcd79915fe3a80a Mon Sep 17 00:00:00 2001 From: MarcoFalke Date: Mon, 17 May 2021 10:12:36 +0200 Subject: fuzz: Sanity check result of CheckTransaction --- src/test/fuzz/transaction.cpp | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/test/fuzz/transaction.cpp b/src/test/fuzz/transaction.cpp index 17e4405a13..797b9cea3e 100644 --- a/src/test/fuzz/transaction.cpp +++ b/src/test/fuzz/transaction.cpp @@ -61,8 +61,11 @@ FUZZ_TARGET_INIT(transaction, initialize_transaction) return; } - TxValidationState state_with_dupe_check; - (void)CheckTransaction(tx, state_with_dupe_check); + { + TxValidationState state_with_dupe_check; + const bool res{CheckTransaction(tx, state_with_dupe_check)}; + Assert(res == state_with_dupe_check.IsValid()); + } const CFeeRate dust_relay_fee{DUST_RELAY_TX_FEE}; std::string reason; -- cgit v1.2.3 From fae4ee545a652cc2934773b0e1fdb9004b0c5ba6 Mon Sep 17 00:00:00 2001 From: MarcoFalke Date: Mon, 17 May 2021 10:05:06 +0200 Subject: fuzz: Add missing CheckTransaction before CheckTxInputs --- src/test/fuzz/coins_view.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/test/fuzz/coins_view.cpp b/src/test/fuzz/coins_view.cpp index 21dc80cc8d..878b5a27da 100644 --- a/src/test/fuzz/coins_view.cpp +++ b/src/test/fuzz/coins_view.cpp @@ -6,6 +6,7 @@ #include #include #include +#include #include #include #include @@ -230,6 +231,11 @@ FUZZ_TARGET_INIT(coins_view, initialize_coins_view) // consensus/tx_verify.cpp:171: bool Consensus::CheckTxInputs(const CTransaction &, TxValidationState &, const CCoinsViewCache &, int, CAmount &): Assertion `!coin.IsSpent()' failed. return; } + TxValidationState dummy; + if (!CheckTransaction(transaction, dummy)) { + // It is not allowed to call CheckTxInputs if CheckTransaction failed + return; + } (void)Consensus::CheckTxInputs(transaction, state, coins_view_cache, fuzzed_data_provider.ConsumeIntegralInRange(0, std::numeric_limits::max()), tx_fee_out); assert(MoneyRange(tx_fee_out)); }, -- cgit v1.2.3