use thread-safe variant of gmtime
authorMartin Willi <martin@strongswan.org>
Tue, 9 Dec 2008 15:00:30 +0000 (15:00 -0000)
committerMartin Willi <martin@strongswan.org>
Tue, 9 Dec 2008 15:00:30 +0000 (15:00 -0000)
src/libstrongswan/asn1/asn1.c

index 6a5ba30..f5fcfdd 100644 (file)
@@ -348,8 +348,9 @@ chunk_t asn1_from_time(const time_t *time, asn1_t type)
        const char *format;
        char buf[BUF_LEN];
        chunk_t formatted_time;
-       struct tm *t = gmtime(time);
+       struct tm t;
        
+       gmtime_r(time, &t);
        if (type == ASN1_GENERALIZEDTIME)
        {
                format = "%04d%02d%02d%02d%02d%02dZ";
@@ -358,10 +359,10 @@ chunk_t asn1_from_time(const time_t *time, asn1_t type)
        else /* ASN1_UTCTIME */
        {
                format = "%02d%02d%02d%02d%02d%02dZ";
-               offset = (t->tm_year < 100)? 0 : -100;
+               offset = (t.tm_year < 100)? 0 : -100;
        }
-       snprintf(buf, BUF_LEN, format, t->tm_year + offset, 
-                        t->tm_mon + 1, t->tm_mday, t->tm_hour, t->tm_min, t->tm_sec);
+       snprintf(buf, BUF_LEN, format, t.tm_year + offset, 
+                        t.tm_mon + 1, t.tm_mday, t.tm_hour, t.tm_min, t.tm_sec);
        formatted_time.ptr = buf;
        formatted_time.len = strlen(buf);
        return asn1_simple_object(type, formatted_time);