In d1_clnt.c the variables s->d1->send_cookie and s->hit aren't reset when initiating a new renegotiation handshake. This is ok if a new session is created, that is everything will be reset anyway, but with an abbreviated handshake without a new session this causes the handshake to fail.
Additionally a typo in d1_pkt.c in OpenSSL 1.0.0 is fixed.
--- ssl/d1_clnt.c 2009-07-15 13:32:57.000000000 +0200
+++ ssl/d1_clnt.c 2009-07-23 12:48:29.000000000 +0200
@@ -223,6 +223,8 @@
s->init_num=0;
/* mark client_random uninitialized */
memset(s->s3->client_random,0,sizeof(s->s3->client_random));
+ s->d1->send_cookie = 0;
+ s->hit = 0;
break;
case SSL3_ST_CW_CLNT_HELLO_A:
--- ssl/d1_pkt.c 2009-07-13 13:44:04.000000000 +0200
+++ ssl/d1_pkt.c 2009-07-23 12:47:41.000000000 +0200
@@ -775,7 +775,7 @@
/* Check for timeout */
if (dtls1_is_timer_expired(s))
{
- if (dtls1_read_failed(s, -1) > 0);
+ if (dtls1_read_failed(s, -1) > 0)
goto start;
}
dtls-cookie-resumption-bug-1.0.0.patch
Description: Binary data
