diff options
| author | MarcoFalke <[email protected]> | 2020-03-07 11:19:46 -0500 |
|---|---|---|
| committer | MarcoFalke <[email protected]> | 2020-03-07 11:19:52 -0500 |
| commit | 5e12a61044b15e4e29ac786135a9ebb72d1bfc61 (patch) | |
| tree | aad1021fe8df5a9d09b82da6bf3fe0add98a987f /src/test/fuzz/integer.cpp | |
| parent | Merge #18286: build: Add locale fuzzer to FUZZERS_MISSING_CORPORA (and unbrea... (diff) | |
| parent | tests: Fuzz additional functions in the script fuzzing harness (diff) | |
| download | discoin-5e12a61044b15e4e29ac786135a9ebb72d1bfc61.tar.xz discoin-5e12a61044b15e4e29ac786135a9ebb72d1bfc61.zip | |
Merge #17926: tests: Add key_io fuzzing harness. Fuzz additional functions in existing fuzzing harnesses.
52fed696d251dc38211eb2fa7f144b6a989dd479 tests: Fuzz additional functions in the script fuzzing harness (practicalswift)
5fc10f3cb5991684f10c589fa5ccf2d694ffa32a tests: Fuzz additional functions in the transaction fuzzing harness (practicalswift)
1d324ce92229f3557f6bb38a63873dea1677240e tests: Fuzz additional functions in the integer fuzzing harness (practicalswift)
4fe4de6364b05d2abde196b486b6e3f254d18026 tests: Fuzz additional functions in the hex fuzzing harness (practicalswift)
c7ea12d098ee292b78274671b698202c6551b075 tests: Add key_io fuzzing harness (practicalswift)
Pull request description:
Add `key_io` fuzzing harness.
Fuzz additional functions in the `hex` fuzzing harness.
Fuzz additional functions in the `integer` fuzzing harness.
Fuzz additional functions in the `script` fuzzing harness.
Fuzz additional functions in the `transaction` fuzzing harness.
**How to test this PR**
```
$ make distclean
$ ./autogen.sh
$ CC=clang CXX=clang++ ./configure --enable-fuzz \
--with-sanitizers=address,fuzzer,undefined
$ make
$ src/test/fuzz/key_io
…
```
ACKs for top commit:
MarcoFalke:
ACK 52fed696d251dc38211eb2fa7f144b6a989dd479 🛫
Tree-SHA512: a57ab66c18d260c2e39d987cab9fa576f7a5520dc1ea7fd607d64d8e005e16558312ddb4c9f4d4f3147dc6194d8ae0b0fb86ed5e58ba6aef5383ea726463df97
Diffstat (limited to 'src/test/fuzz/integer.cpp')
| -rw-r--r-- | src/test/fuzz/integer.cpp | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/src/test/fuzz/integer.cpp b/src/test/fuzz/integer.cpp index 2d47c631c..350d3d333 100644 --- a/src/test/fuzz/integer.cpp +++ b/src/test/fuzz/integer.cpp @@ -23,6 +23,7 @@ #include <test/fuzz/FuzzedDataProvider.h> #include <test/fuzz/fuzz.h> #include <uint256.h> +#include <util/moneystr.h> #include <util/strencodings.h> #include <util/system.h> #include <util/time.h> @@ -76,11 +77,19 @@ void test_one_input(const std::vector<uint8_t>& buffer) (void)DecompressAmount(u64); (void)FormatISO8601Date(i64); (void)FormatISO8601DateTime(i64); + // FormatMoney(i) not defined when i == std::numeric_limits<int64_t>::min() + if (i64 != std::numeric_limits<int64_t>::min()) { + int64_t parsed_money; + if (ParseMoney(FormatMoney(i64), parsed_money)) { + assert(parsed_money == i64); + } + } (void)GetSizeOfCompactSize(u64); (void)GetSpecialScriptSize(u32); // (void)GetVirtualTransactionSize(i64, i64); // function defined only for a subset of int64_t inputs // (void)GetVirtualTransactionSize(i64, i64, u32); // function defined only for a subset of int64_t/uint32_t inputs (void)HexDigit(ch); + (void)MoneyRange(i64); (void)i64tostr(i64); (void)IsDigit(ch); (void)IsSpace(ch); @@ -106,6 +115,14 @@ void test_one_input(const std::vector<uint8_t>& buffer) (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<int64_t>::min() + if (i64 != std::numeric_limits<int64_t>::min()) { + int64_t parsed_money; + if (ParseMoney(ValueFromAmount(i64).getValStr(), parsed_money)) { + assert(parsed_money == i64); + } + } const arith_uint256 au256 = UintToArith256(u256); assert(ArithToUint256(au256) == u256); |