OpenSSL: Fix PKCS#12 extra certificate handling
authorJouni Malinen <j@w1.fi>
Mon, 10 Aug 2015 21:40:27 +0000 (00:40 +0300)
committerJouni Malinen <j@w1.fi>
Mon, 10 Aug 2015 22:27:00 +0000 (01:27 +0300)
Previously, the possible extra certificate(s) from a PKCS#12 file was
added once for each authentication attempt. This resulted in OpenSSL
concatenating the certificates multiple time (add one copy for each try
during the wpa_supplicant process lifetime). Fix this by clearing the
extra chain certificates before adding new ones when using OpenSSL 1.0.1
or newer that include the needed function.

Signed-off-by: Jouni Malinen <j@w1.fi>
src/crypto/tls_openssl.c

index fcc5c7f..d0baea6 100644 (file)
@@ -2112,6 +2112,9 @@ static int tls_parse_pkcs12(SSL_CTX *ssl_ctx, SSL *ssl, PKCS12 *p12,
        }
 
        if (certs) {
+#if OPENSSL_VERSION_NUMBER >= 0x10001000L
+               SSL_CTX_clear_extra_chain_certs(ssl_ctx);
+#endif /* OPENSSL_VERSION_NUMBER >= 0x10001000L */
                while ((cert = sk_X509_pop(certs)) != NULL) {
                        X509_NAME_oneline(X509_get_subject_name(cert), buf,
                                          sizeof(buf));