[HOTFIX] Fix time conversion bug 18/104718/1 accepted/tizen/3.0/common/20161215.164932 accepted/tizen/3.0/ivi/20161215.085621 accepted/tizen/3.0/mobile/20161215.085515 accepted/tizen/3.0/tv/20161215.085540 accepted/tizen/3.0/wearable/20161215.085556 submit/tizen_3.0/20161214.084528
authorsangwan.kwon <sangwan.kwon@samsung.com>
Wed, 14 Dec 2016 06:35:09 +0000 (15:35 +0900)
committersangwan.kwon <sangwan.kwon@samsung.com>
Wed, 14 Dec 2016 07:10:35 +0000 (16:10 +0900)
[ 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 <sangwan.kwon@samsung.com>
src/vcore/TimeConversion.cpp

index d183dea..9d56d14 100644 (file)
@@ -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;
 }