Line data Source code
1 : // Copyright (c) 2019-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 <core_io.h> 6 : #include <primitives/block.h> 7 : #include <pubkey.h> 8 : #include <rpc/util.h> 9 : #include <test/fuzz/fuzz.h> 10 : #include <uint256.h> 11 : #include <univalue.h> 12 : #include <util/strencodings.h> 13 : 14 : #include <cassert> 15 : #include <cstdint> 16 : #include <string> 17 2 : #include <vector> 18 2 : 19 4 : FUZZ_TARGET(hex) 20 : { 21 0 : const std::string random_hex_string(buffer.begin(), buffer.end()); 22 0 : const std::vector<unsigned char> data = ParseHex(random_hex_string); 23 0 : const std::vector<std::byte> bytes{ParseHex<std::byte>(random_hex_string)}; 24 0 : assert(AsBytes(Span{data}) == Span{bytes}); 25 2 : const std::string hex_data = HexStr(data); 26 0 : if (IsHex(random_hex_string)) { 27 2 : assert(ToLower(random_hex_string) == hex_data); 28 0 : } 29 0 : (void)IsHexNumber(random_hex_string); 30 0 : uint256 result; 31 0 : (void)ParseHashStr(random_hex_string, result); 32 0 : (void)uint256S(random_hex_string); 33 : try { 34 0 : (void)HexToPubKey(random_hex_string); 35 0 : } catch (const UniValue&) { 36 0 : } 37 0 : CBlockHeader block_header; 38 0 : (void)DecodeHexBlockHeader(block_header, random_hex_string); 39 0 : CBlock block; 40 0 : (void)DecodeHexBlk(block, random_hex_string); 41 0 : }