gnutls-commit
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[SCM] GNU gnutls branch, master, updated. gnutls_2_11_6-276-g3871a9b


From: Nikos Mavrogiannopoulos
Subject: [SCM] GNU gnutls branch, master, updated. gnutls_2_11_6-276-g3871a9b
Date: Fri, 11 Mar 2011 19:43:46 +0000

This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "GNU gnutls".

http://git.savannah.gnu.org/cgit/gnutls.git/commit/?id=3871a9b6a7400f45f9c11c49f4c12b1b8f4b7d15

The branch, master has been updated
       via  3871a9b6a7400f45f9c11c49f4c12b1b8f4b7d15 (commit)
       via  077ebc2979f286ff7671c8baa80cbf69ed5713d6 (commit)
       via  a2fae2da0c3fd48592c1799a197059a06f3299ae (commit)
      from  9ab04f58304603c5c5f2d69e8e51cd378d75e8a7 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
commit 3871a9b6a7400f45f9c11c49f4c12b1b8f4b7d15
Author: Nikos Mavrogiannopoulos <address@hidden>
Date:   Fri Mar 11 20:43:40 2011 +0100

    properly re-generate headers of fragmented packets.

commit 077ebc2979f286ff7671c8baa80cbf69ed5713d6
Author: Nikos Mavrogiannopoulos <address@hidden>
Date:   Fri Mar 11 20:27:33 2011 +0100

    increased initial retransmission time to 1 sec.

commit a2fae2da0c3fd48592c1799a197059a06f3299ae
Author: Nikos Mavrogiannopoulos <address@hidden>
Date:   Fri Mar 11 20:21:40 2011 +0100

    In DTLS do not hash messages that shouldn't be hashed (i.e. hello verify 
request).

-----------------------------------------------------------------------

Summary of changes:
 lib/gnutls_buffers.c   |    6 ++++-
 lib/gnutls_handshake.c |   54 ++++++++++++++++++-----------------------------
 lib/gnutls_state.c     |    2 +-
 3 files changed, 27 insertions(+), 35 deletions(-)

diff --git a/lib/gnutls_buffers.c b/lib/gnutls_buffers.c
index 55a7665..5d7612d 100644
--- a/lib/gnutls_buffers.c
+++ b/lib/gnutls_buffers.c
@@ -923,6 +923,7 @@ static void 
_gnutls_handshake_buffer_move(handshake_buffer_st* dst, handshake_bu
 
 /* will merge the given handshake_buffer_st to the handshake_recv_buffer
  * list. The given hsk packet will be released in any case (success or 
failure).
+ * Only used in DTLS.
  */
 static int merge_handshake_packet(gnutls_session_t session, 
handshake_buffer_st* hsk)
 {
@@ -959,11 +960,14 @@ int ret;
         }
       
       session->internals.handshake_recv_buffer_size++;
-      
_gnutls_handshake_buffer_move(&session->internals.handshake_recv_buffer[pos], 
hsk);
 
       /* rewrite headers to make them look as each packet came as a single 
fragment */
+      _gnutls_write_uint24(hsk->length, &hsk->header[1]);
       _gnutls_write_uint24(0, &hsk->header[6]);
       _gnutls_write_uint24(hsk->length, &hsk->header[9]);
+
+      
_gnutls_handshake_buffer_move(&session->internals.handshake_recv_buffer[pos], 
hsk);
+
     }
   else
     {
diff --git a/lib/gnutls_handshake.c b/lib/gnutls_handshake.c
index 6b7f1d3..6527ceb 100644
--- a/lib/gnutls_handshake.c
+++ b/lib/gnutls_handshake.c
@@ -1216,23 +1216,6 @@ _gnutls_send_handshake (gnutls_session_t session, 
mbuffer_st * bufel,
                          session, _gnutls_handshake2str (type),
                          (long) datasize);
 
-
-  /* If we send a second or more ClientHello due to a
-     HelloVerifyRequest, we only remember the last ClientHello
-     sent for hashing purposes. */
-  if (_gnutls_is_dtls(session)
-      && type == GNUTLS_HANDSHAKE_CLIENT_HELLO
-      && (session->internals.last_handshake_out == 
GNUTLS_HANDSHAKE_CLIENT_HELLO
-         || session->internals.last_handshake_out == -1))
-    {
-      _gnutls_handshake_hash_buffers_clear (session);
-      if ((ret = _gnutls_handshake_hash_init (session)) < 0)
-        {
-          gnutls_assert ();
-          return ret;
-        }
-    }
-
   /* Here we keep the handshake messages in order to hash them...
    */
   if (type != GNUTLS_HANDSHAKE_HELLO_REQUEST)
@@ -1291,6 +1274,10 @@ _gnutls_handshake_hash_add_recvd (gnutls_session_t 
session,
 {
   int ret;
 
+  if (recv_type == GNUTLS_HANDSHAKE_HELLO_VERIFY_REQUEST ||
+      recv_type == GNUTLS_HANDSHAKE_HELLO_REQUEST)
+    return 0;
+
   /* The idea here is to hash the previous message we received,
    * and add the one we just received into the handshake_hash_buffer.
    */
@@ -1307,25 +1294,21 @@ _gnutls_handshake_hash_add_recvd (gnutls_session_t 
session,
     }
 
   /* here we buffer the handshake messages - needed at Finished message */
-  if (recv_type != GNUTLS_HANDSHAKE_HELLO_REQUEST)
+  if ((ret =
+       _gnutls_handshake_buffer_put (session, header, header_size)) < 0)
     {
+      gnutls_assert ();
+      return ret;
+    }
 
+  if (datalen > 0)
+    {
       if ((ret =
-           _gnutls_handshake_buffer_put (session, header, header_size)) < 0)
+           _gnutls_handshake_buffer_put (session, dataptr, datalen)) < 0)
         {
           gnutls_assert ();
           return ret;
         }
-
-      if (datalen > 0)
-        {
-          if ((ret =
-               _gnutls_handshake_buffer_put (session, dataptr, datalen)) < 0)
-            {
-              gnutls_assert ();
-              return ret;
-            }
-        }
     }
 
   return 0;
@@ -1355,15 +1338,16 @@ _gnutls_recv_handshake (gnutls_session_t session,
           return 0;
         }
 
-       _gnutls_audit_log("Received unexpected handshake message '%s' (%d). 
Expected '%s' (%d)\n",
+       if (ret == GNUTLS_E_UNEXPECTED_HANDSHAKE_PACKET)
+        _gnutls_audit_log("Received unexpected handshake message '%s' (%d). 
Expected '%s' (%d)\n",
          _gnutls_handshake2str(hsk.htype), (int)hsk.htype, 
_gnutls_handshake2str(type), (int)type);
 
       return gnutls_assert_val(ret);
     }
 
   ret = _gnutls_handshake_hash_add_recvd (session, hsk.htype,
-                                          hsk.header, hsk.header_size,
-                                          hsk.data.data, hsk.data.length);
+                                              hsk.header, hsk.header_size,
+                                              hsk.data.data, hsk.data.length);
   if (ret < 0)
     {
       gnutls_assert ();
@@ -2242,6 +2226,7 @@ _gnutls_recv_hello_verify_request (gnutls_session_t 
session,
 {
   ssize_t len = datalen;
   size_t pos = 0;
+  int ret;
   uint8_t cookie_len;
   unsigned int nb_verifs;
 
@@ -2249,7 +2234,7 @@ _gnutls_recv_hello_verify_request (gnutls_session_t 
session,
       || session->security_parameters.entity == GNUTLS_SERVER)
     {
       gnutls_assert ();
-      return GNUTLS_E_UNEXPECTED_PACKET;
+      return GNUTLS_E_INTERNAL_ERROR;
     }
 
   nb_verifs = ++session->internals.dtls.hsk_hello_verify_requests;
@@ -2288,6 +2273,9 @@ _gnutls_recv_hello_verify_request (gnutls_session_t 
session,
       return GNUTLS_E_UNEXPECTED_PACKET_LENGTH;
     }
 
+  /* reset handshake hash buffers */
+  _gnutls_handshake_buffer_empty (session);
+
   return 0;
 }
 
diff --git a/lib/gnutls_state.c b/lib/gnutls_state.c
index e29749e..68dc356 100644
--- a/lib/gnutls_state.c
+++ b/lib/gnutls_state.c
@@ -402,7 +402,7 @@ gnutls_init_dtls (gnutls_session_t * session,
   (*session)->internals.dtls.mtu = DTLS_DEFAULT_MTU;
   (*session)->internals.transport = GNUTLS_DGRAM;
 
-  (*session)->internals.dtls.retrans_timeout = 800;
+  (*session)->internals.dtls.retrans_timeout = 1000;
   (*session)->internals.dtls.total_timeout = 60000;
 
   (*session)->internals.dtls.record_sw_size = 0;


hooks/post-receive
-- 
GNU gnutls



reply via email to

[Prev in Thread] Current Thread [Next in Thread]