diff --git a/src/test/fuzz/CMakeLists.txt b/src/test/fuzz/CMakeLists.txt --- a/src/test/fuzz/CMakeLists.txt +++ b/src/test/fuzz/CMakeLists.txt @@ -88,6 +88,7 @@ hex integer key + key_io locale net_permissions p2p_transport_deserializer diff --git a/src/test/fuzz/hex.cpp b/src/test/fuzz/hex.cpp --- a/src/test/fuzz/hex.cpp +++ b/src/test/fuzz/hex.cpp @@ -2,8 +2,14 @@ // Distributed under the MIT software license, see the accompanying // file COPYING or http://www.opensource.org/licenses/mit-license.php. +#include +#include +#include +#include #include +#include + #include #include @@ -18,4 +24,14 @@ if (IsHex(random_hex_string)) { assert(ToLower(random_hex_string) == hex_data); } + (void)IsHexNumber(random_hex_string); + uint256 result; + (void)ParseHashStr(random_hex_string, result); + (void)uint256S(random_hex_string); + try { + (void)HexToPubKey(random_hex_string); + } catch (const UniValue &) { + } + CBlockHeader block_header; + (void)DecodeHexBlockHeader(block_header, random_hex_string); } diff --git a/src/test/fuzz/integer.cpp b/src/test/fuzz/integer.cpp --- a/src/test/fuzz/integer.cpp +++ b/src/test/fuzz/integer.cpp @@ -23,6 +23,7 @@ #include #include #include +#include #include #include #include @@ -74,6 +75,13 @@ (void)DecompressAmount(u64); (void)FormatISO8601Date(i64); (void)FormatISO8601DateTime(i64); + // FormatMoney(i) not defined when i == std::numeric_limits::min() + if (i64 != std::numeric_limits::min()) { + Amount parsed_money; + if (ParseMoney(FormatMoney(i64 * SATOSHI), parsed_money)) { + assert(parsed_money == i64 * SATOSHI); + } + } (void)GetSizeOfCompactSize(u64); (void)GetSpecialScriptSize(u32); // function defined only for a subset of int64_t inputs @@ -81,6 +89,7 @@ // function defined only for a subset of int64_t/uint32_t inputs // ()GetVirtualTransactionSize(i64, i64, u32); (void)HexDigit(ch); + (void)MoneyRange(i64 * SATOSHI); (void)i64tostr(i64); (void)IsDigit(ch); (void)IsSpace(ch); @@ -106,6 +115,16 @@ (void)SipHashUint256(u64, u64, u256); (void)SipHashUint256Extra(u64, u64, u256, u32); (void)ToLower(ch); + (void)ToUpper(ch); + // ValueFromAmount(i) not defined when i == + // std::numeric_limits::min() + if (i64 != std::numeric_limits::min()) { + Amount parsed_money; + if (ParseMoney(ValueFromAmount(i64 * SATOSHI).getValStr(), + parsed_money)) { + assert(parsed_money == i64 * SATOSHI); + } + } const arith_uint256 au256 = UintToArith256(u256); assert(ArithToUint256(au256) == u256); diff --git a/src/test/fuzz/key_io.cpp b/src/test/fuzz/key_io.cpp new file mode 100644 --- /dev/null +++ b/src/test/fuzz/key_io.cpp @@ -0,0 +1,50 @@ +// Copyright (c) 2020 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 +#include +#include +#include +#include