From: Jay Satiro Date: Fri, 17 Sep 2021 03:47:08 +0000 (-0400) Subject: strerror: use sys_errlist instead of strerror on Windows X-Git-Tag: curl-7_79_1~6 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=b0eda8dc6eb7be3d3e0762be5fb2a60989c2f77b;p=thirdparty%2Fcurl.git 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 --- diff --git a/lib/strerror.c b/lib/strerror.c index 431ff1c2fb..8a27197651 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);