From 81fbac31cc841bd0aaf246f029919633001d4486 Mon Sep 17 00:00:00 2001 From: "sangwan.kwon" Date: Wed, 14 Dec 2016 15:35:09 +0900 Subject: [PATCH] [HOTFIX] Fix time conversion bug [ error ] - Time conversion is not work properly. [ problem ] - mktime() returns the value of type time_t that represents the local time. [ solution ] - Use timegm() for convert tm to time_t as UTC time See, https://linux.die.net/man/3/timegm Change-Id: Ic30fe0054c8f456a2ada13f35f3764e4599c545d Signed-off-by: sangwan.kwon (cherry picked from commit 1ba032d40e6806534a7d0c132af111cea6b06d08) --- src/vcore/TimeConversion.cpp | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/src/vcore/TimeConversion.cpp b/src/vcore/TimeConversion.cpp index d183dea..9d56d14 100644 --- a/src/vcore/TimeConversion.cpp +++ b/src/vcore/TimeConversion.cpp @@ -341,8 +341,10 @@ int asn1TimeToTimeT(ASN1_TIME *t, time_t *res) return 0; char buf[27]; // asctime_r return 26 characters + memset(buf, 0, sizeof(buf)); LogDebug("Convert asn1 to tm: " << asctime_r(&tm, buf)); - *res = mktime(&tm); + *res = timegm(&tm); + LogDebug("Convert tm to time_t: " << *res); // If time_t occured overflow, set TIME_MAX. if (*res == -1) { @@ -350,10 +352,6 @@ int asn1TimeToTimeT(ASN1_TIME *t, time_t *res) *res = TIME_MAX; } - // For Debugging. - struct tm localTm; - localtime_r(res, &localTm); - LogDebug("Result time_t(tm format): " << asctime_r(&localTm, buf)); return 1; } -- 2.7.4