|
15 | 15 | #include <script/standard.h>
|
16 | 16 | #include <streams.h>
|
17 | 17 | #include <test/fuzz/fuzz.h>
|
| 18 | +#include <univalue.h> |
18 | 19 | #include <util/memory.h>
|
19 | 20 |
|
20 | 21 | void initialize()
|
21 | 22 | {
|
22 | 23 | // Fuzzers using pubkey must hold an ECCVerifyHandle.
|
23 | 24 | static const auto verify_handle = MakeUnique<ECCVerifyHandle>();
|
| 25 | + |
| 26 | + SelectParams(CBaseChainParams::REGTEST); |
24 | 27 | }
|
25 | 28 |
|
26 | 29 | void test_one_input(const std::vector<uint8_t>& buffer)
|
27 | 30 | {
|
28 | 31 | const CScript script(buffer.begin(), buffer.end());
|
29 | 32 |
|
30 | 33 | std::vector<unsigned char> compressed;
|
31 |
| - (void)CompressScript(script, compressed); |
| 34 | + if (CompressScript(script, compressed)) { |
| 35 | + const unsigned int size = compressed[0]; |
| 36 | + assert(size >= 0 && size <= 5); |
| 37 | + CScript decompressed_script; |
| 38 | + const bool ok = DecompressScript(decompressed_script, size, compressed); |
| 39 | + assert(ok); |
| 40 | + } |
| 41 | + |
| 42 | + for (unsigned int size = 0; size < 6; ++size) { |
| 43 | + std::vector<unsigned char> vch(GetSpecialScriptSize(size), 0x00); |
| 44 | + vch.insert(vch.end(), buffer.begin(), buffer.end()); |
| 45 | + CScript decompressed_script; |
| 46 | + (void)DecompressScript(decompressed_script, size, vch); |
| 47 | + } |
32 | 48 |
|
33 | 49 | CTxDestination address;
|
34 | 50 | (void)ExtractDestination(script, address);
|
@@ -61,4 +77,17 @@ void test_one_input(const std::vector<uint8_t>& buffer)
|
61 | 77 | (void)script.IsPushOnly();
|
62 | 78 | (void)script.IsUnspendable();
|
63 | 79 | (void)script.GetSigOpCount(/* fAccurate= */ false);
|
| 80 | + |
| 81 | + (void)FormatScript(script); |
| 82 | + (void)ScriptToAsmStr(script, false); |
| 83 | + (void)ScriptToAsmStr(script, true); |
| 84 | + |
| 85 | + UniValue o1(UniValue::VOBJ); |
| 86 | + ScriptPubKeyToUniv(script, o1, true); |
| 87 | + UniValue o2(UniValue::VOBJ); |
| 88 | + ScriptPubKeyToUniv(script, o2, false); |
| 89 | + UniValue o3(UniValue::VOBJ); |
| 90 | + ScriptToUniv(script, o3, true); |
| 91 | + UniValue o4(UniValue::VOBJ); |
| 92 | + ScriptToUniv(script, o4, false); |
64 | 93 | }
|
0 commit comments