Inside Bitcoin
Opening the selected file…
Inside Bitcoin
Opening the selected file…
The code behind the network, with room to understand it.
Release published 2026-10-28 · Snapshot fetched 2026-11-01. Latest stable release at fetch time; development branches and Git history are excluded. Only the selected code window and visible folders load here.
1// Copyright (c) 2009-present The Bitcoin Core developers2// Distributed under the MIT software license, see the accompanying3// file COPYING or http://www.opensource.org/licenses/mit-license.php.5#include <pubkey.h>6#include <script/interpreter.h>7#include <test/fuzz/FuzzedDataProvider.h>8#include <test/fuzz/fuzz.h>10#include <limits>12FUZZ_TARGET(eval_script)13{14FuzzedDataProvider fuzzed_data_provider(buffer.data(), buffer.size());15const auto flags = script_verify_flags::from_int(fuzzed_data_provider.ConsumeIntegral<script_verify_flags::value_type>());16const std::vector<uint8_t> script_bytes = [&] {17if (fuzzed_data_provider.remaining_bytes() != 0) {18return fuzzed_data_provider.ConsumeRemainingBytes<uint8_t>();19} 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 null22// /usr/include/string.h:43:28: note: nonnull attribute specified here23return std::vector<uint8_t>();24}25}();26const CScript script(script_bytes.begin(), script_bytes.end());27for (const auto sig_version : {SigVersion::BASE, SigVersion::WITNESS_V0}) {28std::vector<std::vector<unsigned char>> stack;29(void)EvalScript(stack, script, flags, BaseSignatureChecker(), sig_version, nullptr);30}31}
Independent explanations by MyBitcoinExplorer. Not affiliated with or endorsed by Bitcoin Core. Guides are educational and do not replace the source or its tests.
Bitcoin Core source © its contributors, distributed under the MIT license. Original notices and bundled third-party licenses are retained in the source tree.