Skip to content

Commit fa11b33

Browse files
MarcoFalkeknst
authored andcommitted
Merge bitcoin#24179: fuzz: Speed up script fuzz target
fa68429 fuzz: Speed up script fuzz target (MarcoFalke) Pull request description: Currently the script fuzz target takes the longest time (5000 seconds, aka 80 minutes, see https://cirrus-ci.com/task/5651378755338240?logs=ci#L4501). Fix this by making it twice as fast. Instead of running all possible combinations for all fuzz inputs, consume a bool and decide at runtime which path to take. I moved the new calls to the end to not invalidate existing fuzz inputs. ACKs for top commit: prusnak: ACK fa68429 Tree-SHA512: 5e408255f96f9e92e472f4e8a8a0f8d8814bad444ac0ff7d5db5ed84a59a861135ffe5e04d81f479b0695cb17e4d7af005734959dd4aa9328bdc5acc98f36665
1 parent 99fe949 commit fa11b33

File tree

1 file changed

+8
-11
lines changed

1 file changed

+8
-11
lines changed

src/test/fuzz/script.cpp

Lines changed: 8 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -94,17 +94,6 @@ FUZZ_TARGET(script, .init = initialize_script)
9494
(void)script.IsPushOnly();
9595
(void)script.GetSigOpCount(/* fAccurate= */ false);
9696

97-
(void)FormatScript(script);
98-
(void)ScriptToAsmStr(script, false);
99-
(void)ScriptToAsmStr(script, true);
100-
101-
UniValue o1(UniValue::VOBJ);
102-
ScriptPubKeyToUniv(script, o1, true);
103-
UniValue o2(UniValue::VOBJ);
104-
ScriptPubKeyToUniv(script, o2, false);
105-
UniValue o3(UniValue::VOBJ);
106-
ScriptToUniv(script, o3);
107-
10897
{
10998
const std::vector<uint8_t> bytes = ConsumeRandomLengthByteVector(fuzzed_data_provider);
11099
CompressedScript compressed_script;
@@ -142,4 +131,12 @@ FUZZ_TARGET(script, .init = initialize_script)
142131
(void)(tx_destination_1 == tx_destination_2);
143132
(void)(tx_destination_1 < tx_destination_2);
144133
}
134+
135+
(void)FormatScript(script);
136+
(void)ScriptToAsmStr(script, /*fAttemptSighashDecode=*/fuzzed_data_provider.ConsumeBool());
137+
138+
UniValue o1(UniValue::VOBJ);
139+
ScriptPubKeyToUniv(script, o1, /*include_hex=*/fuzzed_data_provider.ConsumeBool());
140+
UniValue o3(UniValue::VOBJ);
141+
ScriptToUniv(script, o3);
145142
}

0 commit comments

Comments
 (0)