Skip to content

Commit 52fed69

Browse files
tests: Fuzz additional functions in the script fuzzing harness
1 parent 5fc10f3 commit 52fed69

File tree

1 file changed

+30
-1
lines changed

1 file changed

+30
-1
lines changed

src/test/fuzz/script.cpp

Lines changed: 30 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,20 +15,36 @@
1515
#include <script/standard.h>
1616
#include <streams.h>
1717
#include <test/fuzz/fuzz.h>
18+
#include <univalue.h>
1819
#include <util/memory.h>
1920

2021
void initialize()
2122
{
2223
// Fuzzers using pubkey must hold an ECCVerifyHandle.
2324
static const auto verify_handle = MakeUnique<ECCVerifyHandle>();
25+
26+
SelectParams(CBaseChainParams::REGTEST);
2427
}
2528

2629
void test_one_input(const std::vector<uint8_t>& buffer)
2730
{
2831
const CScript script(buffer.begin(), buffer.end());
2932

3033
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+
}
3248

3349
CTxDestination address;
3450
(void)ExtractDestination(script, address);
@@ -61,4 +77,17 @@ void test_one_input(const std::vector<uint8_t>& buffer)
6177
(void)script.IsPushOnly();
6278
(void)script.IsUnspendable();
6379
(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);
6493
}

0 commit comments

Comments
 (0)