From a719be81e999bae2895306b7ef5b181f3a02cc10 Mon Sep 17 00:00:00 2001 From: Daniel Stenberg Date: Thu, 21 Dec 2023 17:50:29 +0100 Subject: [PATCH] strerror: repair get_winsock_error() It would try to read longer than the provided string and crash. Follow-up to ff74cef5d4a0cf60106517a1c7384 Reported-by: calvin2021y on github Fixes #12578 Closes #12579 --- lib/strerror.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/lib/strerror.c b/lib/strerror.c index e35193a48c..a900e78d15 100644 --- a/lib/strerror.c +++ b/lib/strerror.c @@ -582,11 +582,10 @@ get_winsock_error(int err, char *buf, size_t len) { #ifndef CURL_DISABLE_VERBOSE_STRINGS const char *p; + size_t alen; #endif - /* 41 bytes is the longest error string */ - DEBUGASSERT(len > 41); - if(!len || len < 41) + if(!len) return NULL; *buf = '\0'; @@ -763,8 +762,9 @@ get_winsock_error(int err, char *buf, size_t len) default: return NULL; } - memcpy(buf, p, len - 1); - buf[len - 1] = '\0'; + alen = strlen(p); + if(alen < len) + strcpy(buf, p); return buf; #endif } -- 2.47.3