diff options
| author | tb <> | 2022-07-20 14:14:34 +0000 |
|---|---|---|
| committer | tb <> | 2022-07-20 14:14:34 +0000 |
| commit | 529c2c15bf79f417a18ff163b896a60ed9e4693c (patch) | |
| tree | ad5faa0f250c9f441a767235cc090c79992c9b8e /src | |
| parent | 7dfe718e143629b53ed1b8654372f3a2be32d252 (diff) | |
| download | openbsd-529c2c15bf79f417a18ff163b896a60ed9e4693c.tar.gz openbsd-529c2c15bf79f417a18ff163b896a60ed9e4693c.tar.bz2 openbsd-529c2c15bf79f417a18ff163b896a60ed9e4693c.zip | |
Copy alpn_selected using CBS
ok jsing
Diffstat (limited to 'src')
| -rw-r--r-- | src/lib/libssl/ssl_tlsext.c | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/src/lib/libssl/ssl_tlsext.c b/src/lib/libssl/ssl_tlsext.c index 781d40d03a..4ce6939c79 100644 --- a/src/lib/libssl/ssl_tlsext.c +++ b/src/lib/libssl/ssl_tlsext.c | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: ssl_tlsext.c,v 1.122 2022/07/20 13:35:05 tb Exp $ */ | 1 | /* $OpenBSD: ssl_tlsext.c,v 1.123 2022/07/20 14:14:34 tb Exp $ */ |
| 2 | /* | 2 | /* |
| 3 | * Copyright (c) 2016, 2017, 2019 Joel Sing <jsing@openbsd.org> | 3 | * Copyright (c) 2016, 2017, 2019 Joel Sing <jsing@openbsd.org> |
| 4 | * Copyright (c) 2017 Doug Hogan <doug@openbsd.org> | 4 | * Copyright (c) 2017 Doug Hogan <doug@openbsd.org> |
| @@ -113,14 +113,15 @@ tlsext_alpn_server_parse(SSL *s, uint16_t msg_types, CBS *cbs, int *alert) | |||
| 113 | s->ctx->internal->alpn_select_cb_arg); | 113 | s->ctx->internal->alpn_select_cb_arg); |
| 114 | 114 | ||
| 115 | if (r == SSL_TLSEXT_ERR_OK) { | 115 | if (r == SSL_TLSEXT_ERR_OK) { |
| 116 | free(s->s3->alpn_selected); | 116 | CBS cbs; |
| 117 | if ((s->s3->alpn_selected = malloc(selected_len)) == NULL) { | 117 | |
| 118 | s->s3->alpn_selected_len = 0; | 118 | CBS_init(&cbs, selected, selected_len); |
| 119 | |||
| 120 | if (!CBS_stow(&cbs, &s->s3->alpn_selected, | ||
| 121 | &s->s3->alpn_selected_len)) { | ||
| 119 | *alert = SSL_AD_INTERNAL_ERROR; | 122 | *alert = SSL_AD_INTERNAL_ERROR; |
| 120 | return 0; | 123 | return 0; |
| 121 | } | 124 | } |
| 122 | memcpy(s->s3->alpn_selected, selected, selected_len); | ||
| 123 | s->s3->alpn_selected_len = selected_len; | ||
| 124 | 125 | ||
| 125 | return 1; | 126 | return 1; |
| 126 | } | 127 | } |
