/root/bitcoin/src/test/fuzz/script_parsing.cpp
Line | Count | Source |
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 <script/parsing.h> |
6 | | #include <test/fuzz/FuzzedDataProvider.h> |
7 | | #include <test/fuzz/fuzz.h> |
8 | | #include <util/byte_units.h> |
9 | | #include <util/string.h> |
10 | | |
11 | | using util::Split; |
12 | | |
13 | | FUZZ_TARGET(script_parsing) |
14 | 0 | { |
15 | 0 | FuzzedDataProvider fuzzed_data_provider(buffer.data(), buffer.size()); |
16 | 0 | const size_t query_size = fuzzed_data_provider.ConsumeIntegral<size_t>(); |
17 | 0 | const std::string query = fuzzed_data_provider.ConsumeBytesAsString(std::min<size_t>(query_size, 1_MiB)); |
18 | 0 | const std::string span_str = fuzzed_data_provider.ConsumeRemainingBytesAsString(); |
19 | 0 | const std::span<const char> const_span{span_str}; |
20 | |
|
21 | 0 | std::span<const char> mut_span = const_span; |
22 | 0 | (void)script::Const(query, mut_span); |
23 | |
|
24 | 0 | mut_span = const_span; |
25 | 0 | (void)script::Func(query, mut_span); |
26 | |
|
27 | 0 | mut_span = const_span; |
28 | 0 | (void)script::Expr(mut_span); |
29 | |
|
30 | 0 | if (!query.empty()) { Branch (30:9): [True: 0, False: 0]
|
31 | 0 | mut_span = const_span; |
32 | 0 | (void)Split(mut_span, query.front()); |
33 | 0 | } |
34 | 0 | } |