From b0eda8dc6eb7be3d3e0762be5fb2a60989c2f77b Mon Sep 17 00:00:00 2001 From: Jay Satiro Date: Thu, 16 Sep 2021 23:47:08 -0400 Subject: strerror: use sys_errlist instead of strerror on Windows - Change Curl_strerror to use sys_errlist[errnum] instead of strerror to retrieve the error message on Windows. Windows' strerror writes to a static buffer and is not thread-safe. Follow-up to 2f0bb86 which removed most instances of strerror in favor of calling Curl_strerror (which calls strerror_r for other platforms). Ref: https://github.com/curl/curl/pull/7685 Ref: https://github.com/curl/curl/commit/2f0bb86 Closes https://github.com/curl/curl/pull/7735 --- lib/strerror.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/strerror.c b/lib/strerror.c index 431ff1c2f..8a2719765 100644 --- a/lib/strerror.c +++ b/lib/strerror.c @@ -731,12 +731,11 @@ const char *Curl_strerror(int err, char *buf, size_t buflen) max = buflen - 1; *buf = '\0'; - /* !checksrc! disable STRERROR 2 */ #if defined(WIN32) || defined(_WIN32_WCE) #if defined(WIN32) /* 'sys_nerr' is the maximum errno number, it is not widely portable */ if(err >= 0 && err < sys_nerr) - strncpy(buf, strerror(err), max); + strncpy(buf, sys_errlist[err], max); else #endif { @@ -787,6 +786,7 @@ const char *Curl_strerror(int err, char *buf, size_t buflen) } #else { + /* !checksrc! disable STRERROR 1 */ const char *msg = strerror(err); if(msg) strncpy(buf, msg, max); -- cgit v1.2.1