Bitcoin Core 28.0.0
P2P Digital Currency
Loading...
Searching...
No Matches
parse_iso8601.cpp
Go to the documentation of this file.
1// Copyright (c) 2019-2022 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
6#include <test/fuzz/fuzz.h>
7#include <util/time.h>
8#include <wallet/rpc/util.h>
9
10#include <cassert>
11#include <cstdint>
12#include <string>
13#include <vector>
14
15FUZZ_TARGET(parse_iso8601)
16{
17 FuzzedDataProvider fuzzed_data_provider(buffer.data(), buffer.size());
18
19 const int64_t random_time = fuzzed_data_provider.ConsumeIntegral<int32_t>();
20 const std::string random_string = fuzzed_data_provider.ConsumeRemainingBytesAsString();
21
22 const std::string iso8601_datetime = FormatISO8601DateTime(random_time);
23 (void)FormatISO8601Date(random_time);
24 const int64_t parsed_time_1 = wallet::ParseISO8601DateTime(iso8601_datetime);
25 if (random_time >= 0) {
26 assert(parsed_time_1 >= 0);
27 if (iso8601_datetime.length() == 20) {
28 assert(parsed_time_1 == random_time);
29 }
30 }
31
32 const int64_t parsed_time_2 = wallet::ParseISO8601DateTime(random_string);
33 assert(parsed_time_2 >= 0);
34}
std::string ConsumeRemainingBytesAsString()
#define FUZZ_TARGET(...)
Definition fuzz.h:35
int64_t ParseISO8601DateTime(const std::string &str)
Definition util.cpp:23
std::string FormatISO8601Date(int64_t nTime)
Definition time.cpp:55
std::string FormatISO8601DateTime(int64_t nTime)
ISO 8601 formatting is preferred.
Definition time.cpp:46
assert(!tx.IsCoinBase())