X-Git-Url: https://git.openssl.org/gitweb/?p=openssl.git;a=blobdiff_plain;f=ssl%2Fssl_cert.c;h=59a8544431e15ae0f809e2c100e3ad7ce4b3f118;hp=1edbf18f3b7ece36e59a2d3f067b7c26b0ff8b27;hb=9f27b1eec3175305e62eed87faa80e231f319ca0;hpb=9fd603be07f4d486ad38fb107288731743e945be diff --git a/ssl/ssl_cert.c b/ssl/ssl_cert.c index 1edbf18f3b..59a8544431 100644 --- a/ssl/ssl_cert.c +++ b/ssl/ssl_cert.c @@ -388,6 +388,15 @@ CERT *ssl_cert_dup(CERT *cert) ret->client_sigalgs = NULL; /* Shared sigalgs also NULL */ ret->shared_sigalgs = NULL; + /* Copy any custom client certificate types */ + if (cert->ctypes) + { + ret->ctypes = OPENSSL_malloc(cert->ctype_num); + if (!ret->ctypes) + goto err; + memcpy(ret->ctypes, cert->ctypes, cert->ctype_num); + ret->ctype_num = cert->ctype_num; + } ret->cert_flags = cert->cert_flags; @@ -489,6 +498,8 @@ void ssl_cert_free(CERT *c) OPENSSL_free(c->client_sigalgs); if (c->shared_sigalgs) OPENSSL_free(c->shared_sigalgs); + if (c->ctypes) + OPENSSL_free(c->ctypes); OPENSSL_free(c); }