From: Fabian Keil Date: Sun, 7 Jun 2020 14:56:05 +0000 (+0200) Subject: generate_certificate_valid_date(): Fall back to using gmtime() if gmtime_r() isn... X-Git-Tag: v_3_0_29~297 X-Git-Url: http://www.privoxy.org/gitweb/?p=privoxy.git;a=commitdiff_plain;h=b765c85f842fb50171fff08b87e6b0400559a476 generate_certificate_valid_date(): Fall back to using gmtime() if gmtime_r() isn't available As Lee reported it's not available on Windows. --- diff --git a/ssl.c b/ssl.c index 852a9ce5..acd9f903 100644 --- a/ssl.c +++ b/ssl.c @@ -1336,18 +1336,33 @@ static int ssl_certificate_is_invalid(const char *cert_file) static int generate_certificate_valid_date(time_t time_spec, char *buffer, size_t buffer_size) { +#ifdef HAVE_GMTIME_R struct tm valid_date; +#endif + struct tm *timeptr; size_t ret; -#ifndef HAVE_GMTIME_R -#error HTTP inspection currently requires gmtime_r() which seems to be missing +#ifdef HAVE_GMTIME_R + timeptr = gmtime_r(&time_spec, &valid_date); +#elif defined(MUTEX_LOCKS_AVAILABLE) + privoxy_mutex_lock(&gmtime_mutex); + timeptr = gmtime(&time_spec); +#else +#warning Using unlocked gmtime() + timeptr = gmtime(&time_spec); #endif - if (NULL == gmtime_r(&time_spec, &valid_date)) + if (NULL == timeptr) { +#if !defined(HAVE_GMTIME_R) && defined(MUTEX_LOCKS_AVAILABLE) + privoxy_mutex_unlock(&gmtime_mutex); +#endif return 1; } - ret = strftime(buffer, buffer_size, "%Y%m%d%H%M%S", &valid_date); + ret = strftime(buffer, buffer_size, "%Y%m%d%H%M%S", timeptr); +#if !defined(HAVE_GMTIME_R) && defined(MUTEX_LOCKS_AVAILABLE) + privoxy_mutex_unlock(&gmtime_mutex); +#endif if (ret != 14) { return 1;