aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMarcoFalke <*~=`'#}+{/-|&$^_@721217.xyz>2023-06-20 18:22:43 +0200
committerMarcoFalke <*~=`'#}+{/-|&$^_@721217.xyz>2023-06-21 07:51:29 +0200
commitfa31c4daac5629d14360bbe9b2cd98db4c083989 (patch)
tree3f40ed540183239b8045074a12dda5939e6eb3c0 /src
parentd1ae96755a0f9d7e12c3f6741c030d8ea6d0416f (diff)
fuzz: Avoid OOM in transaction fuzz target
Also fix bug where the json object is reused between two calls.
Diffstat (limited to 'src')
-rw-r--r--src/test/fuzz/transaction.cpp13
1 files changed, 10 insertions, 3 deletions
diff --git a/src/test/fuzz/transaction.cpp b/src/test/fuzz/transaction.cpp
index 7035c53d13..c561675d1a 100644
--- a/src/test/fuzz/transaction.cpp
+++ b/src/test/fuzz/transaction.cpp
@@ -101,7 +101,14 @@ FUZZ_TARGET_INIT(transaction, initialize_transaction)
(void)AreInputsStandard(tx, coins_view_cache);
(void)IsWitnessStandard(tx, coins_view_cache);
- UniValue u(UniValue::VOBJ);
- TxToUniv(tx, /*block_hash=*/uint256::ZERO, /*entry=*/u);
- TxToUniv(tx, /*block_hash=*/uint256::ONE, /*entry=*/u);
+ if (tx.GetTotalSize() < 250'000) { // Avoid high memory usage (with msan) due to json encoding
+ {
+ UniValue u{UniValue::VOBJ};
+ TxToUniv(tx, /*block_hash=*/uint256::ZERO, /*entry=*/u);
+ }
+ {
+ UniValue u{UniValue::VOBJ};
+ TxToUniv(tx, /*block_hash=*/uint256::ONE, /*entry=*/u);
+ }
+ }
}