diff options
-rw-r--r-- | src/lib/libssl/tls13_server.c | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/src/lib/libssl/tls13_server.c b/src/lib/libssl/tls13_server.c index 253c1fc208..f5066f958a 100644 --- a/src/lib/libssl/tls13_server.c +++ b/src/lib/libssl/tls13_server.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: tls13_server.c,v 1.88 2021/10/31 16:37:25 tb Exp $ */ | 1 | /* $OpenBSD: tls13_server.c,v 1.89 2021/12/26 14:59:52 jsing Exp $ */ |
2 | /* | 2 | /* |
3 | * Copyright (c) 2019, 2020 Joel Sing <jsing@openbsd.org> | 3 | * Copyright (c) 2019, 2020 Joel Sing <jsing@openbsd.org> |
4 | * Copyright (c) 2020 Bob Beck <beck@openbsd.org> | 4 | * Copyright (c) 2020 Bob Beck <beck@openbsd.org> |
@@ -908,8 +908,11 @@ tls13_client_certificate_recv(struct tls13_ctx *ctx, CBS *cbs) | |||
908 | } | 908 | } |
909 | ERR_clear_error(); | 909 | ERR_clear_error(); |
910 | 910 | ||
911 | cert = sk_X509_value(certs, 0); | 911 | /* |
912 | X509_up_ref(cert); | 912 | * Achtung! Due to API inconsistency, a client includes the peer's leaf |
913 | * certificate in the stored certificate chain, while a server does not. | ||
914 | */ | ||
915 | cert = sk_X509_shift(certs); | ||
913 | 916 | ||
914 | if ((pkey = X509_get0_pubkey(cert)) == NULL) | 917 | if ((pkey = X509_get0_pubkey(cert)) == NULL) |
915 | goto err; | 918 | goto err; |