diff --git a/library/platform_util.c b/library/platform_util.c index 0cda73211b..a14c44513d 100644 --- a/library/platform_util.c +++ b/library/platform_util.c @@ -74,6 +74,7 @@ void mbedtls_platform_zeroize( void *buf, size_t len ) #endif /* MBEDTLS_PLATFORM_ZEROIZE_ALT */ #if defined(MBEDTLS_HAVE_TIME_DATE) && !defined(MBEDTLS_PLATFORM_GMTIME_R_ALT) +#define __STDC_WANT_LIB_EXT1__ 1 #include #if !defined(_WIN32) && (defined(unix) || \ defined(__unix) || defined(__unix__) || (defined(__APPLE__) && \ @@ -105,7 +106,12 @@ struct tm *mbedtls_platform_gmtime_r( const mbedtls_time_t *tt, struct tm *tm_buf ) { #if defined(_WIN32) && !defined(PLATFORM_UTIL_USE_GMTIME) +#if defined(__STDC_LIB_EXT1__) + return( ( gmtime_s( tt, tm_buf ) == 0 ) ? NULL : tm_buf ); +#else + /* MSVC and mingw64 argument order and return value are inconsistent with the C11 standard */ return( ( gmtime_s( tm_buf, tt ) == 0 ) ? tm_buf : NULL ); +#endif #elif !defined(PLATFORM_UTIL_USE_GMTIME) return( gmtime_r( tt, tm_buf ) ); #else