summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorxkernel <xkernel.wang@foxmail.com>2022-01-06 21:29:02 +0800
committerDaniel Stenberg <daniel@haxx.se>2022-01-07 09:34:08 +0100
commit30aea2b1ede1aa36429858b27c3c140e96647b29 (patch)
tree42db22e951d095860ffa6375681e0e5857236c1f
parent60080202bb05a269e6260394cf21ebd5bbbbba31 (diff)
downloadcurl-30aea2b1ede1aa36429858b27c3c140e96647b29.tar.gz
openssl: check the return value of BIO_new_mem_buf()
Closes #8233
-rw-r--r--lib/vtls/openssl.c13
1 files changed, 12 insertions, 1 deletions
diff --git a/lib/vtls/openssl.c b/lib/vtls/openssl.c
index f836c63b0..ecff9f512 100644
--- a/lib/vtls/openssl.c
+++ b/lib/vtls/openssl.c
@@ -3953,9 +3953,20 @@ static CURLcode servercert(struct Curl_easy *data,
/* e.g. match issuer name with provided issuer certificate */
if(SSL_CONN_CONFIG(issuercert) || SSL_CONN_CONFIG(issuercert_blob)) {
- if(SSL_CONN_CONFIG(issuercert_blob))
+ if(SSL_CONN_CONFIG(issuercert_blob)) {
fp = BIO_new_mem_buf(SSL_CONN_CONFIG(issuercert_blob)->data,
(int)SSL_CONN_CONFIG(issuercert_blob)->len);
+ if(!fp) {
+ failf(data,
+ "BIO_new_mem_buf NULL, " OSSL_PACKAGE
+ " error %s",
+ ossl_strerror(ERR_get_error(), error_buffer,
+ sizeof(error_buffer)) );
+ X509_free(backend->server_cert);
+ backend->server_cert = NULL;
+ return CURLE_OUT_OF_MEMORY;
+ }
+ }
else {
fp = BIO_new(BIO_s_file());
if(!fp) {