summaryrefslogtreecommitdiff
path: root/src/lib/libssl
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/libssl')
-rw-r--r--src/lib/libssl/tls13_client.c14
1 files changed, 12 insertions, 2 deletions
diff --git a/src/lib/libssl/tls13_client.c b/src/lib/libssl/tls13_client.c
index d650717856..fec3e825fe 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.107 2026/06/14 14:53:07 jsing Exp $ */ 1/* $OpenBSD: tls13_client.c,v 1.108 2026/06/14 15:51:17 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 *
@@ -460,9 +460,19 @@ tls13_client_hello_retry_send(struct tls13_ctx *ctx, CBB *cbb)
460 ctx->alert = TLS13_ALERT_ILLEGAL_PARAMETER; 460 ctx->alert = TLS13_ALERT_ILLEGAL_PARAMETER;
461 return 0; 461 return 0;
462 } 462 }
463 if (ctx->hs->tls13.key_share != NULL &&
464 ctx->hs->tls13.server_group == tls_key_share_group(ctx->hs->tls13.key_share)) {
465 ctx->alert = TLS13_ALERT_ILLEGAL_PARAMETER;
466 return 0;
467 }
463 468
464 /* Switch to new key share. */ 469 /* Free original key shares. */
465 tls_key_share_free(ctx->hs->key_share); 470 tls_key_share_free(ctx->hs->key_share);
471 ctx->hs->key_share = NULL;
472 tls_key_share_free(ctx->hs->tls13.key_share);
473 ctx->hs->tls13.key_share = NULL;
474
475 /* Create new key share for server selected group. */
466 if ((ctx->hs->key_share = 476 if ((ctx->hs->key_share =
467 tls_key_share_new(ctx->hs->tls13.server_group)) == NULL) 477 tls_key_share_new(ctx->hs->tls13.server_group)) == NULL)
468 return 0; 478 return 0;