summaryrefslogtreecommitdiff
path: root/src/lib/libssl/ssl_cert.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/libssl/ssl_cert.c')
-rw-r--r--src/lib/libssl/ssl_cert.c16
1 files changed, 3 insertions, 13 deletions
diff --git a/src/lib/libssl/ssl_cert.c b/src/lib/libssl/ssl_cert.c
index b779e6bb4d..b8b9bc2390 100644
--- a/src/lib/libssl/ssl_cert.c
+++ b/src/lib/libssl/ssl_cert.c
@@ -616,13 +616,14 @@ STACK_OF(X509_NAME) *SSL_load_client_CA_file(const char *file)
616 BIO *in; 616 BIO *in;
617 X509 *x=NULL; 617 X509 *x=NULL;
618 X509_NAME *xn=NULL; 618 X509_NAME *xn=NULL;
619 STACK_OF(X509_NAME) *ret = NULL,*sk; 619 STACK_OF(X509_NAME) *ret,*sk;
620 620
621 ret=sk_X509_NAME_new_null();
621 sk=sk_X509_NAME_new(xname_cmp); 622 sk=sk_X509_NAME_new(xname_cmp);
622 623
623 in=BIO_new(BIO_s_file_internal()); 624 in=BIO_new(BIO_s_file_internal());
624 625
625 if ((sk == NULL) || (in == NULL)) 626 if ((ret == NULL) || (sk == NULL) || (in == NULL))
626 { 627 {
627 SSLerr(SSL_F_SSL_LOAD_CLIENT_CA_FILE,ERR_R_MALLOC_FAILURE); 628 SSLerr(SSL_F_SSL_LOAD_CLIENT_CA_FILE,ERR_R_MALLOC_FAILURE);
628 goto err; 629 goto err;
@@ -635,15 +636,6 @@ STACK_OF(X509_NAME) *SSL_load_client_CA_file(const char *file)
635 { 636 {
636 if (PEM_read_bio_X509(in,&x,NULL,NULL) == NULL) 637 if (PEM_read_bio_X509(in,&x,NULL,NULL) == NULL)
637 break; 638 break;
638 if (ret == NULL)
639 {
640 ret = sk_X509_NAME_new_null();
641 if (ret == NULL)
642 {
643 SSLerr(SSL_F_SSL_LOAD_CLIENT_CA_FILE,ERR_R_MALLOC_FAILURE);
644 goto err;
645 }
646 }
647 if ((xn=X509_get_subject_name(x)) == NULL) goto err; 639 if ((xn=X509_get_subject_name(x)) == NULL) goto err;
648 /* check for duplicates */ 640 /* check for duplicates */
649 xn=X509_NAME_dup(xn); 641 xn=X509_NAME_dup(xn);
@@ -666,8 +658,6 @@ err:
666 if (sk != NULL) sk_X509_NAME_free(sk); 658 if (sk != NULL) sk_X509_NAME_free(sk);
667 if (in != NULL) BIO_free(in); 659 if (in != NULL) BIO_free(in);
668 if (x != NULL) X509_free(x); 660 if (x != NULL) X509_free(x);
669 if (ret != NULL)
670 ERR_clear_error();
671 return(ret); 661 return(ret);
672 } 662 }
673#endif 663#endif