]> git.ipfire.org Git - thirdparty/curl.git/commitdiff
lib: remove the final strncpy() calls
authorDaniel Stenberg <daniel@haxx.se>
Mon, 9 Sep 2024 07:09:46 +0000 (09:09 +0200)
committerDaniel Stenberg <daniel@haxx.se>
Mon, 9 Sep 2024 11:47:38 +0000 (13:47 +0200)
wolfssl: use strcpy() as the target buffer is > 40 bytes

gethostname: return failure if the buffer is too small instead

Closes #14830

lib/curl_gethostname.c
lib/vtls/wolfssl.c

index 7b28421275fcde7c80e50f21f849ac860b4485b7..617a8ad52f6320f06a2e8880569cacb7745b9bbf 100644 (file)
@@ -59,7 +59,10 @@ int Curl_gethostname(char * const name, GETHOSTNAME_TYPE_ARG2 namelen)
   /* Override hostname when environment variable CURL_GETHOSTNAME is set */
   const char *force_hostname = getenv("CURL_GETHOSTNAME");
   if(force_hostname) {
-    strncpy(name, force_hostname, namelen - 1);
+    if(strlen(force_hostname) < (size_t)namelen)
+      strcpy(name, force_hostname);
+    else
+      return 1; /* can't do it */
     err = 0;
   }
   else {
index 2a65b3e1569674e15c890f3db6853473263a3047..bd7963ec3a019c9c072cb6cd013f11d0219fa5cc 100644 (file)
@@ -1176,15 +1176,15 @@ wolfssl_connect_step1(struct Curl_cfilter *cf, struct Curl_easy *data)
 static char *wolfssl_strerror(unsigned long error, char *buf,
                               unsigned long size)
 {
-  DEBUGASSERT(size);
+  DEBUGASSERT(size > 40);
   *buf = '\0';
 
   wolfSSL_ERR_error_string_n(error, buf, size);
 
   if(!*buf) {
     const char *msg = error ? "Unknown error" : "No error";
-    strncpy(buf, msg, size - 1);
-    buf[size - 1] = '\0';
+    /* the string fits because the assert above assures this */
+    strcpy(buf, msg);
   }
 
   return buf;