Only call ssl3_init_finished_mac once for DTLS
In DTLS if an IO retry occurs during writing of a fragmented ClientHello then we can end up reseting the finish mac variables on the retry, which causes a handshake failure. We should only reset on the first attempt not on retries. Thanks to BoringSSL for reporting this issue. RT#4119 Reviewed-by: Tim Hudson <tjh@openssl.org>
This commit is contained in:
parent
822d265ced
commit
15a7164eb7
1 changed files with 1 additions and 2 deletions
|
@ -317,13 +317,12 @@ int dtls1_connect(SSL *s)
|
|||
#endif
|
||||
|
||||
case SSL3_ST_CW_CLNT_HELLO_A:
|
||||
case SSL3_ST_CW_CLNT_HELLO_B:
|
||||
|
||||
s->shutdown = 0;
|
||||
|
||||
/* every DTLS ClientHello resets Finished MAC */
|
||||
ssl3_init_finished_mac(s);
|
||||
|
||||
case SSL3_ST_CW_CLNT_HELLO_B:
|
||||
dtls1_start_timer(s);
|
||||
ret = ssl3_client_hello(s);
|
||||
if (ret <= 0)
|
||||
|
|
Loading…
Reference in a new issue