dash/ci/test
fanquake 02aac6b0f8 Merge #18162: util: Avoid potential uninitialized read in FormatISO8601DateTime(int64_t) by checking gmtime_s/gmtime_r return value
12a2f377185a413b740460db36812de22ee2e041 util: Avoid potential uninitialized read in FormatISO8601DateTime(int64_t nTime) by checking gmtime_s/gmtime_r return value (practicalswift)

Pull request description:

  Avoid potential uninitialized read in `FormatISO8601DateTime(int64_t)` by checking `gmtime_s`/`gmtime_r` return value.

  Before this patch `FormatISO8601DateTime(67768036191676800)` resulted in:

  ```
  ==5930== Conditional jump or move depends on uninitialised value(s)
  ==5930==    at 0x4F44C0A: std::ostreambuf_iterator<char, std::char_traits<char> > std::num_put<char, std::ostreambuf_iterator<char, std::char_traits<char> > >::_M_insert_int<long>(std::ostreambuf_iterator<char, std::char_traits<char> >, std::ios_base&, char, long) const (in /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.25)
  ==5930==    by 0x4F511A4: std::ostream& std::ostream::_M_insert<long>(long) (in /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.25)
  ==5930==    by 0x4037C3: void tinyformat::formatValue<int>(std::ostream&, char const*, char const*, int, int const&) (tinyformat.h:358)
  ==5930==    by 0x403725: void tinyformat::detail::FormatArg::formatImpl<int>(std::ostream&, char const*, char const*, int, void const*) (tinyformat.h:543)
  ==5930==    by 0x402E02: tinyformat::detail::FormatArg::format(std::ostream&, char const*, char const*, int) const (tinyformat.h:528)
  ==5930==    by 0x401B16: tinyformat::detail::formatImpl(std::ostream&, char const*, tinyformat::detail::FormatArg const*, int) (tinyformat.h:907)
  ==5930==    by 0x4017AE: tinyformat::vformat(std::ostream&, char const*, tinyformat::FormatList const&) (tinyformat.h:1054)
  ==5930==    by 0x401765: void tinyformat::format<int, int, int, int, int, int>(std::ostream&, char const*, int const&, int const&, int const&, int const&, int const&, int const&) (tinyformat.h:1064)
  ==5930==    by 0x401656: std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > tinyformat::format<int, int, int, int, int, int>(char const*, int const&, int const&, int const&, int const&, int const&, int const&) (tinyformat.h:1073)
  ==5930==    by 0x4014CC: FormatISO8601DateTime[abi:cxx11](long) (…)
  ```

  The same goes for other very large positive and negative arguments.

  Fix by simply checking the `gmtime_s`/`gmtime_r` return value :)

ACKs for top commit:
  MarcoFalke:
    ACK 12a2f377185a413b740460db36812de22ee2e041
  theStack:
    re-ACK 12a2f37718
  elichai:
    re ACK 12a2f377185a413b740460db36812de22ee2e041

Tree-SHA512: 066142670d9bf0944d41fa3f3c702b1a460b5471b93e76a619b1e818ff9bb9c09fe14c4c37e9536a04c99533f7f21d1b08ac141e1b829ff87ee54c80d0e61d48
2022-10-20 11:47:02 -04:00
..
00_setup_env_arm.sh ci: reconcile differences between ci setups 2022-07-01 09:04:01 +05:30
00_setup_env_i686_ubsan.sh ci: reconcile differences between ci setups 2022-07-01 09:04:01 +05:30
00_setup_env_i686.sh ci: reconcile differences between ci setups 2022-07-01 09:04:01 +05:30
00_setup_env_mac_host.sh ci: reconcile differences between ci setups 2022-07-01 09:04:01 +05:30
00_setup_env_mac.sh ci: reconcile differences between ci setups 2022-07-01 09:04:01 +05:30
00_setup_env_native_centos.sh Merge #17635: ci: Add CentOS 7 build 2022-08-30 09:08:16 -05:00
00_setup_env_native_cxx20.sh ci: reconcile differences between ci setups 2022-07-01 09:04:01 +05:30
00_setup_env_native_fuzz_with_valgrind.sh Merge #18162: util: Avoid potential uninitialized read in FormatISO8601DateTime(int64_t) by checking gmtime_s/gmtime_r return value 2022-10-20 11:47:02 -04:00
00_setup_env_native_fuzz.sh ci: reconcile differences between ci setups 2022-07-01 09:04:01 +05:30
00_setup_env_native_nowallet.sh ci: reconcile differences between ci setups 2022-07-01 09:04:01 +05:30
00_setup_env_native_qt5.sh ci: align TEST_RUNNER_EXTRA with INTEGRATION_TESTS_ARGS 2022-07-01 09:04:01 +05:30
00_setup_env_native_tsan.sh Partial Merge #17517: ci: Bump to clang-8 for asan build to avoid segfaults on ppc64le 2022-10-17 15:41:14 -05:00
00_setup_env_s390x.sh Merge #17515: Remove straggling OpenSSL references from doc and build 2022-06-16 01:34:30 -04:00
00_setup_env_win64.sh ci: reconcile differences between ci setups 2022-07-01 09:04:01 +05:30
00_setup_env.sh Partial Merge #17517: ci: Bump to clang-8 for asan build to avoid segfaults on ppc64le 2022-10-17 15:41:14 -05:00
03_before_install.sh merge bitcoin#16582: Rework ci (Use travis only as fallback env) 2022-02-12 19:24:32 +05:30
04_install.sh Partial Merge #17517: ci: Bump to clang-8 for asan build to avoid segfaults on ppc64le 2022-10-17 15:41:14 -05:00
05_before_script.sh merge bitcoin#17176: Cleanup macOS runs 2022-07-01 08:59:38 +05:30