mirror of
https://github.com/bitcoin/bitcoin.git
synced 2026-03-20 12:39:47 +01:00
util: Avoid potential uninitialized read in FormatISO8601DateTime(int64_t nTime) by checking gmtime_s/gmtime_r return value
This commit is contained in:
@@ -94,10 +94,12 @@ std::string FormatISO8601DateTime(int64_t nTime) {
|
||||
struct tm ts;
|
||||
time_t time_val = nTime;
|
||||
#ifdef _MSC_VER
|
||||
gmtime_s(&ts, &time_val);
|
||||
if (gmtime_s(&ts, &time_val) != 0) {
|
||||
#else
|
||||
gmtime_r(&time_val, &ts);
|
||||
if (gmtime_r(&time_val, &ts) == nullptr) {
|
||||
#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);
|
||||
}
|
||||
|
||||
@@ -105,10 +107,12 @@ std::string FormatISO8601Date(int64_t nTime) {
|
||||
struct tm ts;
|
||||
time_t time_val = nTime;
|
||||
#ifdef _MSC_VER
|
||||
gmtime_s(&ts, &time_val);
|
||||
if (gmtime_s(&ts, &time_val) != 0) {
|
||||
#else
|
||||
gmtime_r(&time_val, &ts);
|
||||
if (gmtime_r(&time_val, &ts) == nullptr) {
|
||||
#endif
|
||||
return {};
|
||||
}
|
||||
return strprintf("%04i-%02i-%02i", ts.tm_year + 1900, ts.tm_mon + 1, ts.tm_mday);
|
||||
}
|
||||
|
||||
@@ -124,4 +128,4 @@ int64_t ParseISO8601DateTime(const std::string& str)
|
||||
if (ptime.is_not_a_date_time() || epoch > ptime)
|
||||
return 0;
|
||||
return (ptime - epoch).total_seconds();
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user