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 | } |