diff options
author | djm <> | 2006-06-27 05:05:42 +0000 |
---|---|---|
committer | djm <> | 2006-06-27 05:05:42 +0000 |
commit | f6198d4d0ab97685dc56be2d48715ed39fcc74b9 (patch) | |
tree | 6e28360095ed5ba5ef1760a419c43eef4ef6946b /src/lib/libssl/ssl_cert.c | |
parent | 0ff0f9d99c40072de315264b0f602bd639e7f662 (diff) | |
download | openbsd-f6198d4d0ab97685dc56be2d48715ed39fcc74b9.tar.gz openbsd-f6198d4d0ab97685dc56be2d48715ed39fcc74b9.tar.bz2 openbsd-f6198d4d0ab97685dc56be2d48715ed39fcc74b9.zip |
import of openssl-0.9.7j
Diffstat (limited to 'src/lib/libssl/ssl_cert.c')
-rw-r--r-- | src/lib/libssl/ssl_cert.c | 16 |
1 files changed, 13 insertions, 3 deletions
diff --git a/src/lib/libssl/ssl_cert.c b/src/lib/libssl/ssl_cert.c index b8b9bc2390..b779e6bb4d 100644 --- a/src/lib/libssl/ssl_cert.c +++ b/src/lib/libssl/ssl_cert.c | |||
@@ -616,14 +616,13 @@ 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,*sk; | 619 | STACK_OF(X509_NAME) *ret = NULL,*sk; |
620 | 620 | ||
621 | ret=sk_X509_NAME_new_null(); | ||
622 | sk=sk_X509_NAME_new(xname_cmp); | 621 | sk=sk_X509_NAME_new(xname_cmp); |
623 | 622 | ||
624 | in=BIO_new(BIO_s_file_internal()); | 623 | in=BIO_new(BIO_s_file_internal()); |
625 | 624 | ||
626 | if ((ret == NULL) || (sk == NULL) || (in == NULL)) | 625 | if ((sk == NULL) || (in == NULL)) |
627 | { | 626 | { |
628 | SSLerr(SSL_F_SSL_LOAD_CLIENT_CA_FILE,ERR_R_MALLOC_FAILURE); | 627 | SSLerr(SSL_F_SSL_LOAD_CLIENT_CA_FILE,ERR_R_MALLOC_FAILURE); |
629 | goto err; | 628 | goto err; |
@@ -636,6 +635,15 @@ STACK_OF(X509_NAME) *SSL_load_client_CA_file(const char *file) | |||
636 | { | 635 | { |
637 | if (PEM_read_bio_X509(in,&x,NULL,NULL) == NULL) | 636 | if (PEM_read_bio_X509(in,&x,NULL,NULL) == NULL) |
638 | break; | 637 | 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 | } | ||
639 | if ((xn=X509_get_subject_name(x)) == NULL) goto err; | 647 | if ((xn=X509_get_subject_name(x)) == NULL) goto err; |
640 | /* check for duplicates */ | 648 | /* check for duplicates */ |
641 | xn=X509_NAME_dup(xn); | 649 | xn=X509_NAME_dup(xn); |
@@ -658,6 +666,8 @@ err: | |||
658 | if (sk != NULL) sk_X509_NAME_free(sk); | 666 | if (sk != NULL) sk_X509_NAME_free(sk); |
659 | if (in != NULL) BIO_free(in); | 667 | if (in != NULL) BIO_free(in); |
660 | if (x != NULL) X509_free(x); | 668 | if (x != NULL) X509_free(x); |
669 | if (ret != NULL) | ||
670 | ERR_clear_error(); | ||
661 | return(ret); | 671 | return(ret); |
662 | } | 672 | } |
663 | #endif | 673 | #endif |