diff options
Diffstat (limited to 'src/lib/libssl/ssl_cert.c')
| -rw-r--r-- | src/lib/libssl/ssl_cert.c | 16 |
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 |
