Bitcoin Core
31.0.0
P2P Digital Currency
Loading...
Searching...
No Matches
src
test
fuzz
decode_tx.cpp
Go to the documentation of this file.
1
// Copyright (c) 2019-present The Bitcoin Core developers
2
// Distributed under the MIT software license, see the accompanying
3
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
4
5
#include <
core_io.h
>
6
#include <
primitives/transaction.h
>
7
#include <
test/fuzz/fuzz.h
>
8
#include <
util/strencodings.h
>
9
10
#include <cassert>
11
#include <cstdint>
12
#include <string>
13
#include <vector>
14
15
FUZZ_TARGET
(
decode_tx
)
16
{
17
const
std::string
tx_hex
=
HexStr
(buffer);
18
CMutableTransaction
mtx
;
19
const
bool
result_none
=
DecodeHexTx
(
mtx
,
tx_hex
,
false
,
false
);
20
const
bool
result_try_witness
=
DecodeHexTx
(
mtx
,
tx_hex
,
false
,
true
);
21
const
bool
result_try_witness_and_maybe_no_witness
=
DecodeHexTx
(
mtx
,
tx_hex
,
true
,
true
);
22
CMutableTransaction
no_witness_mtx
;
23
const
bool
result_try_no_witness
=
DecodeHexTx
(
no_witness_mtx
,
tx_hex
,
true
,
false
);
24
assert
(!
result_none
);
25
if
(
result_try_witness_and_maybe_no_witness
) {
26
assert
(
result_try_no_witness
||
result_try_witness
);
27
}
28
if
(
result_try_no_witness
) {
29
assert
(!
no_witness_mtx
.HasWitness());
30
assert
(
result_try_witness_and_maybe_no_witness
);
31
}
32
}
DecodeHexTx
bool DecodeHexTx(CMutableTransaction &tx, const std::string &hex_tx, bool try_no_witness, bool try_witness)
Definition
core_io.cpp:227
core_io.h
fuzz.h
FUZZ_TARGET
#define FUZZ_TARGET(...)
Definition
fuzz.h:35
HexStr
std::string HexStr(const std::span< const uint8_t > s)
Convert a span of bytes to a lower-case hexadecimal string.
Definition
hex_base.cpp:30
transaction.h
strencodings.h
CMutableTransaction
A mutable version of CTransaction.
Definition
transaction.h:358
Ticks
constexpr auto Ticks(Dur2 d)
Helper to count the seconds of a duration/time_point.
Definition
time.h:73
assert
assert(!tx.IsCoinBase())
Generated on Thu Apr 16 2026 09:42:38 for Bitcoin Core by
1.10.0