/root/bitcoin/src/test/fuzz/eval_script.cpp
Line | Count | Source (jump to first uncovered line) |
1 | | // Copyright (c) 2009-2021 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 <pubkey.h> |
6 | | #include <script/interpreter.h> |
7 | | #include <test/fuzz/FuzzedDataProvider.h> |
8 | | #include <test/fuzz/fuzz.h> |
9 | | |
10 | | #include <limits> |
11 | | |
12 | | FUZZ_TARGET(eval_script) |
13 | 0 | { |
14 | 0 | FuzzedDataProvider fuzzed_data_provider(buffer.data(), buffer.size()); |
15 | 0 | const unsigned int flags = fuzzed_data_provider.ConsumeIntegral<unsigned int>(); |
16 | 0 | const std::vector<uint8_t> script_bytes = [&] { |
17 | 0 | if (fuzzed_data_provider.remaining_bytes() != 0) { Branch (17:13): [True: 0, False: 0]
|
18 | 0 | return fuzzed_data_provider.ConsumeRemainingBytes<uint8_t>(); |
19 | 0 | } else { |
20 | | // Avoid UBSan warning: |
21 | | // test/fuzz/FuzzedDataProvider.h:212:17: runtime error: null pointer passed as argument 1, which is declared to never be null |
22 | | // /usr/include/string.h:43:28: note: nonnull attribute specified here |
23 | 0 | return std::vector<uint8_t>(); |
24 | 0 | } |
25 | 0 | }(); |
26 | 0 | const CScript script(script_bytes.begin(), script_bytes.end()); |
27 | 0 | for (const auto sig_version : {SigVersion::BASE, SigVersion::WITNESS_V0}) { Branch (27:33): [True: 0, False: 0]
|
28 | 0 | std::vector<std::vector<unsigned char>> stack; |
29 | 0 | (void)EvalScript(stack, script, flags, BaseSignatureChecker(), sig_version, nullptr); |
30 | 0 | } |
31 | 0 | } |