From: Daniel Stenberg Date: Wed, 30 Nov 2022 09:20:06 +0000 (+0100) Subject: openssl: prefix errors with '[lib]/[version]: ' X-Git-Tag: curl-7_87_0~87 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=39bbd1cafb2056ee349946073b86da5a7c9c4600;p=thirdparty%2Fcurl.git openssl: prefix errors with '[lib]/[version]: ' To help users understand where this (cryptic) error message comes from. Suggested-by: Philip Sanetra Ref: #10002 Closes #10004 --- diff --git a/lib/vtls/openssl.c b/lib/vtls/openssl.c index 0f04fcdb05..a04d849c5b 100644 --- a/lib/vtls/openssl.c +++ b/lib/vtls/openssl.c @@ -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,