When server side renegotiation is triggered, the TLSv1.2 state machine
sends a HelloRequest before going to ST_SW_FLUSH and ST_OK. In this case
we do not need the transcript and currently hit the sanity check in ST_OK
that ensures the transcript has been freed, breaking server initiated
renegotiation. We do however need the transcript in the DTLS case.
ok tb@
-/* $OpenBSD: ssl_srvr.c,v 1.100 2021/03/27 17:56:28 tb Exp $ */
+/* $OpenBSD: ssl_srvr.c,v 1.101 2021/03/29 16:56:20 jsing Exp $ */
/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
* All rights reserved.
*
S3I(s)->hs.state = SSL3_ST_SW_FLUSH;
s->internal->init_num = 0;
- if (!tls1_transcript_init(s)) {
- ret = -1;
- goto end;
+ if (SSL_is_dtls(s)) {
+ if (!tls1_transcript_init(s)) {
+ ret = -1;
+ goto end;
+ }
}
break;