Sophie

Sophie

distrib > Scientific%20Linux > 5x > x86_64 > by-pkgid > 488f7d353752a24f1cc3f6fc2e121835 > files > 8

gnutls-1.4.1-10.el5_9.1.src.rpm

diff -up gnutls-1.4.1/lib/auth_dh_common.c.data-size gnutls-1.4.1/lib/auth_dh_common.c
--- gnutls-1.4.1/lib/auth_dh_common.c.data-size	2006-03-08 11:44:59.000000000 +0100
+++ gnutls-1.4.1/lib/auth_dh_common.c	2012-03-22 16:09:14.427192286 +0100
@@ -165,8 +165,6 @@ _gnutls_gen_dh_common_client_kx (gnutls_
       goto error;
     }
 
-  _gnutls_dh_set_peer_public (session, session->key->client_Y);
-
   /* THESE SHOULD BE DISCARDED */
   _gnutls_mpi_release (&session->key->client_Y);
   _gnutls_mpi_release (&session->key->client_p);
diff -up gnutls-1.4.1/lib/gnutls_auth.c.data-size gnutls-1.4.1/lib/gnutls_auth.c
--- gnutls-1.4.1/lib/gnutls_auth.c.data-size	2006-03-08 11:44:59.000000000 +0100
+++ gnutls-1.4.1/lib/gnutls_auth.c	2012-03-22 16:09:14.428192298 +0100
@@ -394,14 +394,17 @@ _gnutls_auth_info_set (gnutls_session_t
 	   */
 	  if (gnutls_auth_get_type (session) != session->key->auth_info_type)
 	    {
+	    
+	      _gnutls_free_auth_info (session);
+	      
 	      session->key->auth_info =
-		gnutls_realloc_fast (session->key->auth_info, size);
+		calloc( 1, size);
 	      if (session->key->auth_info == NULL)
 		{
 		  gnutls_assert ();
 		  return GNUTLS_E_MEMORY_ERROR;
 		}
-	      memset (session->key->auth_info, 0, size);
+
 	      session->key->auth_info_type = type;
 	      session->key->auth_info_size = size;
 	    }
diff -up gnutls-1.4.1/lib/gnutls_session.c.data-size gnutls-1.4.1/lib/gnutls_session.c
--- gnutls-1.4.1/lib/gnutls_session.c.data-size	2006-03-08 11:44:59.000000000 +0100
+++ gnutls-1.4.1/lib/gnutls_session.c	2012-03-22 16:10:27.184695435 +0100
@@ -25,6 +25,7 @@
 #include "gnutls_errors.h"
 #include "debug.h"
 #include <gnutls_session_pack.h>
+#include <gnutls_datum.h>
 
 /**
   * gnutls_session_get_data - Returns all session parameters.
@@ -58,15 +59,23 @@ gnutls_session_get_data (gnutls_session_
       gnutls_assert ();
       return ret;
     }
-  *session_data_size = psession.size;
 
   if (psession.size > *session_data_size)
-    return GNUTLS_E_SHORT_MEMORY_BUFFER;
+    {
+      *session_data_size = psession.size;
+      ret = GNUTLS_E_SHORT_MEMORY_BUFFER;
+      goto error;
+    }
+  *session_data_size = psession.size;
 
   if (session_data != NULL)
     memcpy (session_data, psession.data, psession.size);
 
-  return 0;
+  ret = 0;
+
+error:
+  _gnutls_free_datum( &psession);
+  return ret;
 }
 
 /**
diff -up gnutls-1.4.1/lib/gnutls_session_pack.c.data-size gnutls-1.4.1/lib/gnutls_session_pack.c
--- gnutls-1.4.1/lib/gnutls_session_pack.c.data-size	2006-03-08 11:44:59.000000000 +0100
+++ gnutls-1.4.1/lib/gnutls_session_pack.c	2012-03-22 16:09:14.429192310 +0100
@@ -165,7 +165,7 @@ _gnutls_session_unpack (gnutls_session_t
       return GNUTLS_E_INTERNAL_ERROR;
     }
 
-  if (session->key->auth_info != NULL)
+  if (_gnutls_get_auth_info(session) != NULL)
     {
       _gnutls_free_auth_info (session);
     }
@@ -260,13 +260,6 @@ pack_certificate_auth_info (gnutls_sessi
   int cert_size, pack_size;
   cert_auth_info_t info = _gnutls_get_auth_info (session);
 
-
-  if (info == NULL && session->key->auth_info_size != 0)
-    {
-      gnutls_assert ();
-      return GNUTLS_E_INVALID_REQUEST;
-    }
-
   if (info)
     {
       cert_size = 4;
@@ -510,12 +503,6 @@ pack_srp_auth_info (gnutls_session_t ses
   srp_server_auth_info_t info = _gnutls_get_auth_info (session);
   int pack_size;
 
-  if (info == NULL && session->key->auth_info_size != 0)
-    {
-      gnutls_assert ();
-      return GNUTLS_E_INVALID_REQUEST;
-    }
-
   if (info && info->username)
     pack_size = strlen (info->username) + 1;	/* include the terminating null */
   else
@@ -619,12 +606,6 @@ pack_anon_auth_info (gnutls_session_t se
   int pos = 0;
   size_t pack_size;
 
-  if (info == NULL && session->key->auth_info_size != 0)
-    {
-      gnutls_assert ();
-      return GNUTLS_E_INVALID_REQUEST;
-    }
-
   if (info)
     pack_size = 2 + 4 * 3 + info->dh.prime.size +
       info->dh.generator.size + info->dh.public_key.size;
@@ -783,12 +764,6 @@ pack_psk_auth_info (gnutls_session_t ses
 
   info = _gnutls_get_auth_info (session);
 
-  if (info == NULL && session->key->auth_info_size != 0)
-    {
-      gnutls_assert ();
-      return GNUTLS_E_INVALID_REQUEST;
-    }
-
   if (info)
     {
       username_size = strlen (info->username) + 1;	/* include the terminating null */