diff --git a/library/x509.c b/library/x509.c
index d5f93d0..4214cee 100644
--- a/library/x509.c
+++ b/library/x509.c
@@ -820,9 +820,13 @@
 }
 
 #if defined(MBEDTLS_HAVE_TIME_DATE)
+/*
+ * Set the time structure to the current time.
+ * Return 0 on success, non-zero on failure.
+ */
+#if defined(_WIN32) && !defined(EFIX64) && !defined(EFI32)
 static int x509_get_current_time( mbedtls_x509_time *now )
 {
-#if defined(_WIN32) && !defined(EFIX64) && !defined(EFI32)
     SYSTEMTIME st;
 
     GetSystemTime( &st );
@@ -833,9 +837,15 @@
     now->hour = st.wHour;
     now->min  = st.wMinute;
     now->sec  = st.wSecond;
+
+    return( 0 );
+}
 #else
+static int x509_get_current_time( mbedtls_x509_time *now )
+{
     struct tm *lt;
     time_t tt;
+    int ret = 0;
 
 #if defined(MBEDTLS_THREADING_C)
     if( mbedtls_mutex_lock( &mbedtls_threading_gmtime_mutex ) != 0 )
@@ -845,22 +855,26 @@
     tt = time( NULL );
     lt = gmtime( &tt );
 
-    now->year = lt->tm_year + 1900;
-    now->mon  = lt->tm_mon  + 1;
-    now->day  = lt->tm_mday;
-    now->hour = lt->tm_hour;
-    now->min  = lt->tm_min;
-    now->sec  = lt->tm_sec;
+    if( lt == NULL )
+        ret = -1;
+    else
+    {
+        now->year = lt->tm_year + 1900;
+        now->mon  = lt->tm_mon  + 1;
+        now->day  = lt->tm_mday;
+        now->hour = lt->tm_hour;
+        now->min  = lt->tm_min;
+        now->sec  = lt->tm_sec;
+    }
 
 #if defined(MBEDTLS_THREADING_C)
     if( mbedtls_mutex_unlock( &mbedtls_threading_gmtime_mutex ) != 0 )
         return( MBEDTLS_ERR_THREADING_MUTEX_ERROR );
 #endif
 
-#endif /* _WIN32 && !EFIX64 && !EFI32 */
-
-    return( 0 );
+    return( ret );
 }
+#endif /* _WIN32 && !EFIX64 && !EFI32 */
 
 /*
  * Return 0 if before <= after, 1 otherwise
