summaryrefslogtreecommitdiff
path: root/src/lib/libssl/tls13_client.c
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/lib/libssl/tls13_client.c20
1 files changed, 8 insertions, 12 deletions
diff --git a/src/lib/libssl/tls13_client.c b/src/lib/libssl/tls13_client.c
index 3e168a0b54..4b52f6cf62 100644
--- a/src/lib/libssl/tls13_client.c
+++ b/src/lib/libssl/tls13_client.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: tls13_client.c,v 1.92 2022/01/11 18:39:28 jsing Exp $ */ 1/* $OpenBSD: tls13_client.c,v 1.93 2022/01/11 19:03:15 jsing Exp $ */
2/* 2/*
3 * Copyright (c) 2018, 2019 Joel Sing <jsing@openbsd.org> 3 * Copyright (c) 2018, 2019 Joel Sing <jsing@openbsd.org>
4 * 4 *
@@ -561,7 +561,7 @@ tls13_server_certificate_recv(struct tls13_ctx *ctx, CBS *cbs)
561 X509 *cert = NULL; 561 X509 *cert = NULL;
562 EVP_PKEY *pkey; 562 EVP_PKEY *pkey;
563 const uint8_t *p; 563 const uint8_t *p;
564 int cert_idx, alert_desc; 564 int alert_desc, cert_type;
565 int ret = 0; 565 int ret = 0;
566 566
567 if ((certs = sk_X509_new_null()) == NULL) 567 if ((certs = sk_X509_new_null()) == NULL)
@@ -625,24 +625,20 @@ tls13_server_certificate_recv(struct tls13_ctx *ctx, CBS *cbs)
625 goto err; 625 goto err;
626 if (EVP_PKEY_missing_parameters(pkey)) 626 if (EVP_PKEY_missing_parameters(pkey))
627 goto err; 627 goto err;
628 if ((cert_idx = ssl_cert_type(cert, pkey)) < 0) 628 if ((cert_type = ssl_cert_type(cert, pkey)) < 0)
629 goto err; 629 goto err;
630 630
631 sk_X509_pop_free(s->session->cert_chain, X509_free);
632 s->session->cert_chain = certs;
633 certs = NULL;
634
635 X509_up_ref(cert);
636 X509_free(s->session->peer_pkeys[cert_idx].x509);
637 s->session->peer_pkeys[cert_idx].x509 = cert;
638 s->session->peer_key = &s->session->peer_pkeys[cert_idx];
639
640 X509_up_ref(cert); 631 X509_up_ref(cert);
641 X509_free(s->session->peer_cert); 632 X509_free(s->session->peer_cert);
642 s->session->peer_cert = cert; 633 s->session->peer_cert = cert;
634 s->session->peer_cert_type = cert_type;
643 635
644 s->session->verify_result = s->verify_result; 636 s->session->verify_result = s->verify_result;
645 637
638 sk_X509_pop_free(s->session->cert_chain, X509_free);
639 s->session->cert_chain = certs;
640 certs = NULL;
641
646 if (ctx->ocsp_status_recv_cb != NULL && 642 if (ctx->ocsp_status_recv_cb != NULL &&
647 !ctx->ocsp_status_recv_cb(ctx)) 643 !ctx->ocsp_status_recv_cb(ctx))
648 goto err; 644 goto err;