diff options
Diffstat (limited to 'src/lib')
| -rw-r--r-- | src/lib/libssl/tls13_client.c | 14 |
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; |
