aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorpracticalswift <practicalswift@users.noreply.github.com>2021-05-25 21:09:09 +0000
committerpracticalswift <practicalswift@users.noreply.github.com>2021-05-25 21:09:05 +0000
commit37371268d14ed6d5739af5b65d8bdb38b0e8dda2 (patch)
treeff4b78f566cfba60187b7467c475b9000880f9f1
parent860093401840d7aad7b439aeba0d1598933bc9c6 (diff)
downloadbitcoin-37371268d14ed6d5739af5b65d8bdb38b0e8dda2.tar.xz
Mark `CheckTxInputs` `[[nodiscard]]` (out-param `txfee` only set if call is successful). Avoid UUM in fuzzing harness `coins_view`.
-rw-r--r--src/consensus/tx_verify.h2
-rw-r--r--src/test/fuzz/coins_view.cpp5
2 files changed, 4 insertions, 3 deletions
diff --git a/src/consensus/tx_verify.h b/src/consensus/tx_verify.h
index e78dc9f2a5..d5fd43e131 100644
--- a/src/consensus/tx_verify.h
+++ b/src/consensus/tx_verify.h
@@ -24,7 +24,7 @@ namespace Consensus {
* @param[out] txfee Set to the transaction fee if successful.
* Preconditions: tx.IsCoinBase() is false.
*/
-bool CheckTxInputs(const CTransaction& tx, TxValidationState& state, const CCoinsViewCache& inputs, int nSpendHeight, CAmount& txfee);
+[[nodiscard]] bool CheckTxInputs(const CTransaction& tx, TxValidationState& state, const CCoinsViewCache& inputs, int nSpendHeight, CAmount& txfee);
} // namespace Consensus
/** Auxiliary functions for transaction validation (ideally should not be exposed) */
diff --git a/src/test/fuzz/coins_view.cpp b/src/test/fuzz/coins_view.cpp
index 878b5a27da..b509ee0b26 100644
--- a/src/test/fuzz/coins_view.cpp
+++ b/src/test/fuzz/coins_view.cpp
@@ -236,8 +236,9 @@ FUZZ_TARGET_INIT(coins_view, initialize_coins_view)
// It is not allowed to call CheckTxInputs if CheckTransaction failed
return;
}
- (void)Consensus::CheckTxInputs(transaction, state, coins_view_cache, fuzzed_data_provider.ConsumeIntegralInRange<int>(0, std::numeric_limits<int>::max()), tx_fee_out);
- assert(MoneyRange(tx_fee_out));
+ if (Consensus::CheckTxInputs(transaction, state, coins_view_cache, fuzzed_data_provider.ConsumeIntegralInRange<int>(0, std::numeric_limits<int>::max()), tx_fee_out)) {
+ assert(MoneyRange(tx_fee_out));
+ }
},
[&] {
const CTransaction transaction{random_mutable_transaction};