diff options
author | jsing <> | 2018-11-21 15:13:29 +0000 |
---|---|---|
committer | jsing <> | 2018-11-21 15:13:29 +0000 |
commit | ab91451e6ebf1260022c78c25a334e437c04d78e (patch) | |
tree | 7992535c747d2aff7dd9a131f8fc65ad2af3636d /src/lib/libssl/ssl_srvr.c | |
parent | 1b50b4396296c64d8937c2ec1c7ed2eb5547cf91 (diff) | |
download | openbsd-ab91451e6ebf1260022c78c25a334e437c04d78e.tar.gz openbsd-ab91451e6ebf1260022c78c25a334e437c04d78e.tar.bz2 openbsd-ab91451e6ebf1260022c78c25a334e437c04d78e.zip |
Fix DTLS transcript handling for HelloVerifyRequest.
If DTLS sees a HelloVerifyRequest the transcript is reset - the previous
tls1_init_finished_mac() function could be called multiple times and would
discard any existing state. The replacement tls1_transcript_init() is more
strict and fails if a transcript already exists.
Provide an explicit tls1_transcript_reset() function and call it from the
appropriate places. This also lets us make DTLS less of a special snowflake
and call tls1_transcript_init() in the same place as used for TLS.
ok beck@ tb@
Diffstat (limited to 'src/lib/libssl/ssl_srvr.c')
-rw-r--r-- | src/lib/libssl/ssl_srvr.c | 7 |
1 files changed, 2 insertions, 5 deletions
diff --git a/src/lib/libssl/ssl_srvr.c b/src/lib/libssl/ssl_srvr.c index 27024be856..0667ac8da3 100644 --- a/src/lib/libssl/ssl_srvr.c +++ b/src/lib/libssl/ssl_srvr.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: ssl_srvr.c,v 1.60 2018/11/11 21:54:47 beck Exp $ */ | 1 | /* $OpenBSD: ssl_srvr.c,v 1.61 2018/11/21 15:13:29 jsing Exp $ */ |
2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) | 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) |
3 | * All rights reserved. | 3 | * All rights reserved. |
4 | * | 4 | * |
@@ -368,10 +368,7 @@ ssl3_accept(SSL *s) | |||
368 | S3I(s)->hs.next_state = SSL3_ST_SR_CLNT_HELLO_A; | 368 | S3I(s)->hs.next_state = SSL3_ST_SR_CLNT_HELLO_A; |
369 | 369 | ||
370 | /* HelloVerifyRequest resets Finished MAC. */ | 370 | /* HelloVerifyRequest resets Finished MAC. */ |
371 | if (!tls1_transcript_init(s)) { | 371 | tls1_transcript_reset(s); |
372 | ret = -1; | ||
373 | goto end; | ||
374 | } | ||
375 | break; | 372 | break; |
376 | 373 | ||
377 | case SSL3_ST_SW_SRVR_HELLO_A: | 374 | case SSL3_ST_SW_SRVR_HELLO_A: |