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 '')
| -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 |
