1 // Copyright (c) 2019-2020 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 #include <vector> 18 initialize_hex()19void initialize_hex() 20 { 21 static const ECCVerifyHandle verify_handle; 22 } 23 FUZZ_TARGET_INIT(hex,initialize_hex)24FUZZ_TARGET_INIT(hex, initialize_hex) 25 { 26 const std::string random_hex_string(buffer.begin(), buffer.end()); 27 const std::vector<unsigned char> data = ParseHex(random_hex_string); 28 const std::string hex_data = HexStr(data); 29 if (IsHex(random_hex_string)) { 30 assert(ToLower(random_hex_string) == hex_data); 31 } 32 (void)IsHexNumber(random_hex_string); 33 uint256 result; 34 (void)ParseHashStr(random_hex_string, result); 35 (void)uint256S(random_hex_string); 36 try { 37 (void)HexToPubKey(random_hex_string); 38 } catch (const UniValue&) { 39 } 40 CBlockHeader block_header; 41 (void)DecodeHexBlockHeader(block_header, random_hex_string); 42 CBlock block; 43 (void)DecodeHexBlk(block, random_hex_string); 44 } 45