]> git.ipfire.org Git - thirdparty/curl.git/commitdiff
openssl: prefix errors with '[lib]/[version]: '
authorDaniel Stenberg <daniel@haxx.se>
Wed, 30 Nov 2022 09:20:06 +0000 (10:20 +0100)
committerDaniel Stenberg <daniel@haxx.se>
Wed, 30 Nov 2022 13:05:57 +0000 (14:05 +0100)
To help users understand where this (cryptic) error message comes from.

Suggested-by: Philip Sanetra
Ref: #10002
Closes #10004

lib/vtls/openssl.c

index 0f04fcdb054037f71c7ff4bcec209e3f36331383..a04d849c5b6ef749bcdbaf056d0e34193f820a3a 100644 (file)
@@ -895,12 +895,25 @@ static const char *SSL_ERROR_to_str(int err)
   }
 }
 
+static size_t ossl_version(char *buffer, size_t size);
+
 /* Return error string for last OpenSSL error
  */
 static char *ossl_strerror(unsigned long error, char *buf, size_t size)
 {
-  if(size)
+  size_t len;
+  DEBUGASSERT(size);
+  *buf = '\0';
+
+  len = ossl_version(buf, size);
+  DEBUGASSERT(len < (size - 2));
+  if(len < (size - 2)) {
+    buf += len;
+    size -= (len + 2);
+    *buf++ = ':';
+    *buf++ = ' ';
     *buf = '\0';
+  }
 
 #ifdef OPENSSL_IS_BORINGSSL
   ERR_error_string_n((uint32_t)error, buf, size);
@@ -908,7 +921,7 @@ static char *ossl_strerror(unsigned long error, char *buf, size_t size)
   ERR_error_string_n(error, buf, size);
 #endif
 
-  if(size > 1 && !*buf) {
+  if(!*buf) {
     strncpy(buf, (error ? "Unknown error" : "No error"), size);
     buf[size - 1] = '\0';
   }
@@ -4492,8 +4505,6 @@ static bool ossl_data_pending(struct Curl_cfilter *cf,
   return FALSE;
 }
 
-static size_t ossl_version(char *buffer, size_t size);
-
 static ssize_t ossl_send(struct Curl_cfilter *cf,
                          struct Curl_easy *data,
                          const void *mem,