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;
                }




Attachment: dtls-cookie-resumption-bug-1.0.0.patch
Description: Binary data



Reply via email to