diff --git a/ci/test/00_setup_env_native_fuzz_with_valgrind.sh b/ci/test/00_setup_env_native_fuzz_with_valgrind.sh index 6e1c400d50..45b13a669d 100644 --- a/ci/test/00_setup_env_native_fuzz_with_valgrind.sh +++ b/ci/test/00_setup_env_native_fuzz_with_valgrind.sh @@ -12,7 +12,7 @@ export NO_DEPENDS=1 export RUN_UNIT_TESTS=false export RUN_FUNCTIONAL_TESTS=false export RUN_FUZZ_TESTS=true -export FUZZ_TESTS_CONFIG="--exclude integer,parse_iso8601 --valgrind" +export FUZZ_TESTS_CONFIG="--valgrind" export GOAL="install" export BITCOIN_CONFIG="--enable-fuzz --with-sanitizers=fuzzer CC=clang-8 CXX=clang++-8" # Use clang-8, instead of default clang on bionic, which is clang-6 and does not come with libfuzzer on aarch64 diff --git a/src/util/time.cpp b/src/util/time.cpp index b41ad42b5a..bbc2ec931d 100644 --- a/src/util/time.cpp +++ b/src/util/time.cpp @@ -77,10 +77,12 @@ std::string FormatISO8601DateTime(int64_t nTime) { struct tm ts; time_t time_val = nTime; #ifdef HAVE_GMTIME_R - gmtime_r(&time_val, &ts); + if (gmtime_r(&time_val, &ts) == nullptr) { #else - gmtime_s(&ts, &time_val); + if (gmtime_s(&ts, &time_val) != 0) { #endif + return {}; + } return strprintf("%04i-%02i-%02iT%02i:%02i:%02iZ", ts.tm_year + 1900, ts.tm_mon + 1, ts.tm_mday, ts.tm_hour, ts.tm_min, ts.tm_sec); } @@ -88,10 +90,12 @@ std::string FormatISO8601Date(int64_t nTime) { struct tm ts; time_t time_val = nTime; #ifdef HAVE_GMTIME_R - gmtime_r(&time_val, &ts); + if (gmtime_r(&time_val, &ts) == nullptr) { #else - gmtime_s(&ts, &time_val); + if (gmtime_s(&ts, &time_val) != 0) { #endif + return {}; + } return strprintf("%04i-%02i-%02i", ts.tm_year + 1900, ts.tm_mon + 1, ts.tm_mday); }