summaryrefslogtreecommitdiff
path: root/src/lib/libssl/tls13_record_layer.c
diff options
context:
space:
mode:
authorjsing <>2020-01-21 12:08:04 +0000
committerjsing <>2020-01-21 12:08:04 +0000
commit6e568c664abbc564bc3a97d549d37155632d79a5 (patch)
treeddf5742f7e036ce4aa194b92e0b226d1ae3f9564 /src/lib/libssl/tls13_record_layer.c
parent59792af6ba04f21a2d45c97fccc72ac33f22cc48 (diff)
downloadopenbsd-6e568c664abbc564bc3a97d549d37155632d79a5.tar.gz
openbsd-6e568c664abbc564bc3a97d549d37155632d79a5.tar.bz2
openbsd-6e568c664abbc564bc3a97d549d37155632d79a5.zip
Correct legacy fallback for TLSv1.3 client.
When falling back to the legacy TLS client, in the case where a server has sent a TLS record that contains more than one handshake message, we also need to stash the unprocessed record data for later processing. Otherwise we end up with missing handshake data. ok beck@ tb@
Diffstat (limited to 'src/lib/libssl/tls13_record_layer.c')
-rw-r--r--src/lib/libssl/tls13_record_layer.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/src/lib/libssl/tls13_record_layer.c b/src/lib/libssl/tls13_record_layer.c
index e1007b3f7b..a6b00a83b3 100644
--- a/src/lib/libssl/tls13_record_layer.c
+++ b/src/lib/libssl/tls13_record_layer.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: tls13_record_layer.c,v 1.17 2020/01/20 22:04:17 beck Exp $ */ 1/* $OpenBSD: tls13_record_layer.c,v 1.18 2020/01/21 12:08:04 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 *
@@ -154,6 +154,12 @@ tls13_record_layer_free(struct tls13_record_layer *rl)
154 freezero(rl, sizeof(struct tls13_record_layer)); 154 freezero(rl, sizeof(struct tls13_record_layer));
155} 155}
156 156
157void
158tls13_record_layer_rbuf(struct tls13_record_layer *rl, CBS *cbs)
159{
160 CBS_dup(&rl->rbuf_cbs, cbs);
161}
162
157static int 163static int
158tls13_record_layer_inc_seq_num(uint8_t *seq_num) 164tls13_record_layer_inc_seq_num(uint8_t *seq_num)
159{ 165{