From 529c2c15bf79f417a18ff163b896a60ed9e4693c Mon Sep 17 00:00:00 2001 From: tb <> Date: Wed, 20 Jul 2022 14:14:34 +0000 Subject: Copy alpn_selected using CBS ok jsing --- src/lib/libssl/ssl_tlsext.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) (limited to 'src') 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 @@ -/* $OpenBSD: ssl_tlsext.c,v 1.122 2022/07/20 13:35:05 tb Exp $ */ +/* $OpenBSD: ssl_tlsext.c,v 1.123 2022/07/20 14:14:34 tb Exp $ */ /* * Copyright (c) 2016, 2017, 2019 Joel Sing * Copyright (c) 2017 Doug Hogan @@ -113,14 +113,15 @@ tlsext_alpn_server_parse(SSL *s, uint16_t msg_types, CBS *cbs, int *alert) s->ctx->internal->alpn_select_cb_arg); if (r == SSL_TLSEXT_ERR_OK) { - free(s->s3->alpn_selected); - if ((s->s3->alpn_selected = malloc(selected_len)) == NULL) { - s->s3->alpn_selected_len = 0; + CBS cbs; + + CBS_init(&cbs, selected, selected_len); + + if (!CBS_stow(&cbs, &s->s3->alpn_selected, + &s->s3->alpn_selected_len)) { *alert = SSL_AD_INTERNAL_ERROR; return 0; } - memcpy(s->s3->alpn_selected, selected, selected_len); - s->s3->alpn_selected_len = selected_len; return 1; } -- cgit v1.2.3-55-g6feb