/
githubmirror
/
bitcoin
Обзор
Документация
Войти
/
githubmirror
/
bitcoin
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
src/test/fuzz/chain.cpp
65 строк
2 KB
MarcoFalke
fuzz: clang-format LIMITED_WHILE
14 июл 2026, 14:48
14 июл 2026, 14:48
fab8eee
Код
Авторство
О чём код?
// Copyright (c) 2020-present The Bitcoin Core developers // Distributed under the MIT software license, see the accompanying // file COPYING or http://www.opensource.org/licenses/mit-license.php. #include <chain.h> #include <test/fuzz/FuzzedDataProvider.h> #include <test/fuzz/fuzz.h> #include <test/fuzz/util.h> #include <cstdint> #include <optional> #include <vector> FUZZ_TARGET(chain) { FuzzedDataProvider fuzzed_data_provider(buffer.data(), buffer.size()); std::optional<CDiskBlockIndex> disk_block_index = ConsumeDeserializable<CDiskBlockIndex>(fuzzed_data_provider); if (!disk_block_index) { return; } const uint256 zero{}; disk_block_index->phashBlock = &zero; { LOCK(::cs_main); (void)disk_block_index->ConstructBlockHash(); (void)disk_block_index->GetBlockPos(); (void)disk_block_index->GetBlockTime(); (void)disk_block_index->GetBlockTimeMax(); (void)disk_block_index->GetMedianTimePast(); (void)disk_block_index->GetUndoPos(); (void)disk_block_index->HaveNumChainTxs(); (void)disk_block_index->IsValid(BLOCK_VALID_TRANSACTIONS); } const CBlockHeader block_header = disk_block_index->GetBlockHeader(); (void)CDiskBlockIndex{*disk_block_index}; (void)disk_block_index->BuildSkip(); LIMITED_WHILE (fuzzed_data_provider.ConsumeBool(), 10000) { const BlockStatus block_status = fuzzed_data_provider.PickValueInArray({ BlockStatus::BLOCK_VALID_UNKNOWN, BlockStatus::BLOCK_VALID_RESERVED, BlockStatus::BLOCK_VALID_TREE, BlockStatus::BLOCK_VALID_TRANSACTIONS, BlockStatus::BLOCK_VALID_CHAIN, BlockStatus::BLOCK_VALID_SCRIPTS, BlockStatus::BLOCK_VALID_MASK, BlockStatus::BLOCK_HAVE_DATA, BlockStatus::BLOCK_HAVE_UNDO, BlockStatus::BLOCK_HAVE_MASK, BlockStatus::BLOCK_FAILED_VALID, BlockStatus::BLOCK_OPT_WITNESS, }); if (block_status & ~BLOCK_VALID_MASK) { continue; } WITH_LOCK(::cs_main, (void)disk_block_index->RaiseValidity(block_status)); } CBlockIndex block_index{block_header}; block_index.phashBlock = &zero; (void)block_index.GetBlockHash(); (void)block_index.ToString(); }