rpms/gnutls/F-8 gnutls-1.6.3-compress.patch, NONE, 1.1 gnutls.spec, 1.30, 1.31

Tomáš Mráz (tmraz) fedora-extras-commits at redhat.com
Fri Jun 20 14:07:21 UTC 2008


Author: tmraz

Update of /cvs/pkgs/rpms/gnutls/F-8
In directory cvs-int.fedora.redhat.com:/tmp/cvs-serv13253

Modified Files:
	gnutls.spec 
Added Files:
	gnutls-1.6.3-compress.patch 
Log Message:
* Fri Jun 20 2008 Tomas Mraz <tmraz at redhat.com> 1.6.3-4
- backported fix for compression support (#451952)


gnutls-1.6.3-compress.patch:

--- NEW FILE gnutls-1.6.3-compress.patch ---
diff -up gnutls-1.6.3/lib/gnutls_cipher.c.compress gnutls-1.6.3/lib/gnutls_cipher.c
--- gnutls-1.6.3/lib/gnutls_cipher.c.compress	2008-06-20 15:49:08.000000000 +0200
+++ gnutls-1.6.3/lib/gnutls_cipher.c	2008-06-20 15:54:15.000000000 +0200
@@ -91,7 +91,7 @@ _gnutls_encrypt (gnutls_session_t sessio
       /* Here comp is allocated and must be 
        * freed.
        */
-      ret = _gnutls_m_plaintext2compressed (session, &comp, plain);
+      ret = _gnutls_m_plaintext2compressed (session, &comp, &plain);
       if (ret < 0)
 	{
 	  gnutls_assert ();
@@ -160,20 +160,20 @@ _gnutls_decrypt (gnutls_session_t sessio
 
       gcomp.data = data;
       gcomp.size = ret;
-      ret = _gnutls_m_compressed2plaintext (session, &gtxt, gcomp);
+      ret = _gnutls_m_compressed2plaintext (session, &gtxt, &gcomp);
       if (ret < 0)
 	{
 	  return ret;
 	}
 
-      if (gtxt.size > max_data_size)
+      if (gtxt.size > MAX_RECORD_RECV_SIZE)
 	{
 	  gnutls_assert ();
 	  _gnutls_free_datum (&gtxt);
 	  /* This shouldn't have happen and
 	   * is a TLS fatal error.
 	   */
-	  return GNUTLS_E_INTERNAL_ERROR;
+	  return GNUTLS_E_DECOMPRESSION_FAILED;
 	}
 
       memcpy (data, gtxt.data, gtxt.size);
diff -up gnutls-1.6.3/lib/gnutls_record.c.compress gnutls-1.6.3/lib/gnutls_record.c
--- gnutls-1.6.3/lib/gnutls_record.c.compress	2006-11-16 15:11:11.000000000 +0100
+++ gnutls-1.6.3/lib/gnutls_record.c	2008-06-20 15:54:15.000000000 +0200
@@ -778,13 +778,19 @@ record_check_type (gnutls_session_t sess
 inline static int
 get_temp_recv_buffer (gnutls_session_t session, gnutls_datum_t * tmp)
 {
+size_t max_record_size;
+
+  if (gnutls_compression_get(session) != GNUTLS_COMP_NULL)
+    max_record_size = MAX_RECORD_RECV_SIZE + EXTRA_COMP_SIZE;
+  else
+    max_record_size = MAX_RECORD_RECV_SIZE;
 
   /* We allocate MAX_RECORD_RECV_SIZE length
    * because we cannot predict the output data by the record
    * packet length (due to compression).
    */
 
-  if (MAX_RECORD_RECV_SIZE > session->internals.recv_buffer.size ||
+  if (max_record_size > session->internals.recv_buffer.size ||
       session->internals.recv_buffer.data == NULL)
     {
 
@@ -792,7 +798,7 @@ get_temp_recv_buffer (gnutls_session_t s
        */
       session->internals.recv_buffer.data =
 	gnutls_realloc (session->internals.recv_buffer.data,
-			MAX_RECORD_RECV_SIZE);
+			max_record_size);
 
       if (session->internals.recv_buffer.data == NULL)
 	{
@@ -800,7 +806,7 @@ get_temp_recv_buffer (gnutls_session_t s
 	  return GNUTLS_E_MEMORY_ERROR;
 	}
 
-      session->internals.recv_buffer.size = MAX_RECORD_RECV_SIZE;
+      session->internals.recv_buffer.size = max_record_size;
     }
 
   tmp->data = session->internals.recv_buffer.data;
diff -up gnutls-1.6.3/lib/gnutls_compress.h.compress gnutls-1.6.3/lib/gnutls_compress.h
--- gnutls-1.6.3/lib/gnutls_compress.h.compress	2006-03-08 11:44:59.000000000 +0100
+++ gnutls-1.6.3/lib/gnutls_compress.h	2008-06-20 15:54:15.000000000 +0200
@@ -24,7 +24,7 @@
 
 int _gnutls_m_plaintext2compressed (gnutls_session_t session,
 				    gnutls_datum_t * compressed,
-				    gnutls_datum_t plaintext);
+				    const gnutls_datum_t *plaintext);
 int _gnutls_m_compressed2plaintext (gnutls_session_t session,
 				    gnutls_datum_t * plain,
-				    gnutls_datum_t compressed);
+				    const gnutls_datum_t* compressed);
diff -up gnutls-1.6.3/lib/gnutls_compress.c.compress gnutls-1.6.3/lib/gnutls_compress.c
--- gnutls-1.6.3/lib/gnutls_compress.c.compress	2006-03-08 11:44:59.000000000 +0100
+++ gnutls-1.6.3/lib/gnutls_compress.c	2008-06-20 15:57:53.000000000 +0200
@@ -36,15 +36,15 @@
 int
 _gnutls_m_plaintext2compressed (gnutls_session_t session,
 				gnutls_datum_t * compressed,
-				gnutls_datum_t plaintext)
+				const gnutls_datum_t *plaintext)
 {
   int size;
   opaque *data;
 
   size =
     _gnutls_compress (session->connection_state.write_compression_state,
-		      plaintext.data, plaintext.size, &data,
-		      MAX_RECORD_SEND_SIZE + 1024);
+		      plaintext->data, plaintext->size, &data,
+		      MAX_RECORD_SEND_SIZE + EXTRA_COMP_SIZE);
   if (size < 0)
     {
       gnutls_assert ();
@@ -59,15 +59,15 @@ _gnutls_m_plaintext2compressed (gnutls_s
 int
 _gnutls_m_compressed2plaintext (gnutls_session_t session,
 				gnutls_datum_t * plain,
-				gnutls_datum_t compressed)
+				const gnutls_datum_t* compressed)
 {
   int size;
   opaque *data;
 
   size =
     _gnutls_decompress (session->connection_state.
-			read_compression_state, compressed.data,
-			compressed.size, &data, MAX_RECORD_RECV_SIZE);
+			read_compression_state, compressed->data,
+			compressed->size, &data, MAX_RECORD_RECV_SIZE);
   if (size < 0)
     {
       gnutls_assert ();


Index: gnutls.spec
===================================================================
RCS file: /cvs/pkgs/rpms/gnutls/F-8/gnutls.spec,v
retrieving revision 1.30
retrieving revision 1.31
diff -u -r1.30 -r1.31
--- gnutls.spec	20 May 2008 11:51:45 -0000	1.30
+++ gnutls.spec	20 Jun 2008 14:06:27 -0000	1.31
@@ -1,7 +1,7 @@
 Summary: A TLS protocol implementation
 Name: gnutls
 Version: 1.6.3
-Release: 3%{?dist}
+Release: 4%{?dist}
 # The libgnutls library is LGPLv2+, utilities and remaining libraries are GPLv2+
 License: GPLv2+ and LGPLv2+
 Group: System Environment/Libraries
@@ -19,6 +19,7 @@
 Patch1: gnutls-1.4.1-enable-psk.patch
 Patch2: gnutls-1.6.3-incompat-pointers.patch
 Patch4: gnutls-1.4.1-sa-2008-1.patch
+Patch5: gnutls-1.6.3-compress.patch
 
 BuildRoot:  %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
 Requires: libgcrypt >= 1.2.2
@@ -63,6 +64,7 @@
 %patch1 -p1 -b .enable-psk
 %patch2 -p1 -b .incompat
 %patch4 -p1 -b .sa-2008-1
+%patch5 -p1 -b .compress
 
 for i in auth_srp_rsa.c auth_srp_sb64.c auth_srp_passwd.c auth_srp.c gnutls_srp.c ext_srp.c; do
     touch lib/$i
@@ -129,6 +131,9 @@
 %{_mandir}/man1/*
 
 %changelog
+* Fri Jun 20 2008 Tomas Mraz <tmraz at redhat.com> 1.6.3-4
+- backported fix for compression support (#451952)
+
 * Tue May 20 2008 Tomas Mraz <tmraz at redhat.com> 1.6.3-3
 - fix three security issues in gnutls handshake - GNUTLS-SA-2008-1
   (#447461, #447462, #447463)




More information about the fedora-extras-commits mailing list