From: Dr. Stephen Henson Date: Wed, 13 Nov 2013 22:57:11 +0000 (+0000) Subject: Allow match selecting of current certificate. X-Git-Tag: master-post-reformat~1074 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=629b640bbc5391c6ac727aaa8465c5c5f99a5708;p=oweals%2Fopenssl.git Allow match selecting of current certificate. If pointer comparison for current certificate fails check to see if a match using X509_cmp succeeds for the current certificate: this is useful for cases where the certificate pointer is not available. --- diff --git a/ssl/ssl_cert.c b/ssl/ssl_cert.c index 9d77ef79a2..005d82d630 100644 --- a/ssl/ssl_cert.c +++ b/ssl/ssl_cert.c @@ -602,6 +602,8 @@ int ssl_cert_add1_chain_cert(CERT *c, X509 *x) int ssl_cert_select_current(CERT *c, X509 *x) { int i; + if (x == NULL) + return 0; for (i = 0; i < SSL_PKEY_NUM; i++) { if (c->pkeys[i].x509 == x) @@ -610,6 +612,15 @@ int ssl_cert_select_current(CERT *c, X509 *x) return 1; } } + + for (i = 0; i < SSL_PKEY_NUM; i++) + { + if (c->pkeys[i].x509 && !X509_cmp(c->pkeys[i].x509, x)) + { + c->key = &c->pkeys[i]; + return 1; + } + } return 0; }