[spice] 0.10.1-5 mjpeg fixes (no bz), usbredir RHBZ 819484

Christophe Fergeau teuf at fedoraproject.org
Fri Jun 1 12:51:47 UTC 2012


commit 8448ff98db44d45d8a0f8f64cc837ff713260d21
Author: Alon Levy <alevy at redhat.com>
Date:   Mon May 14 11:03:45 2012 +0300

    0.10.1-5 mjpeg fixes (no bz), usbredir RHBZ 819484

 ...-add-usbredir-to-recognized-channel-names.patch |   27 ++++++++
 ...g_encoder-Fix-memory-leak-for-the-inital-.patch |   68 ++++++++++++++++++++
 ...g_encoder-fix-wrong-size-assigned-to-dest.patch |   28 ++++++++
 spice.spec                                         |   14 ++++-
 4 files changed, 135 insertions(+), 2 deletions(-)
---
diff --git a/0006-server-reds-add-usbredir-to-recognized-channel-names.patch b/0006-server-reds-add-usbredir-to-recognized-channel-names.patch
new file mode 100644
index 0000000..9c6b2df
--- /dev/null
+++ b/0006-server-reds-add-usbredir-to-recognized-channel-names.patch
@@ -0,0 +1,27 @@
+From ce8e865cf1fcd7ee6ef2e6f8b33506df31e3345e Mon Sep 17 00:00:00 2001
+From: Alon Levy <alevy at redhat.com>
+Date: Mon, 7 May 2012 14:14:37 +0300
+Subject: [PATCH 6/8] server/reds: add "usbredir" to recognized channel names
+
+RHBZ: 819484
+
+Signed-off-by: Alon Levy <alevy at redhat.com>
+---
+ server/reds.c |    1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/server/reds.c b/server/reds.c
+index 1696fbc..26d6f89 100644
+--- a/server/reds.c
++++ b/server/reds.c
+@@ -3971,6 +3971,7 @@ SPICE_GNUC_VISIBLE int spice_server_set_channel_security(SpiceServer *s, const c
+ #ifdef USE_SMARTCARD
+         [ SPICE_CHANNEL_SMARTCARD] = "smartcard",
+ #endif
++        [ SPICE_CHANNEL_USBREDIR ] = "usbredir",
+     };
+     int i;
+ 
+-- 
+1.7.10.1
+
diff --git a/0007-server-mjpeg_encoder-Fix-memory-leak-for-the-inital-.patch b/0007-server-mjpeg_encoder-Fix-memory-leak-for-the-inital-.patch
new file mode 100644
index 0000000..cae906c
--- /dev/null
+++ b/0007-server-mjpeg_encoder-Fix-memory-leak-for-the-inital-.patch
@@ -0,0 +1,68 @@
+From 1ba5d956168b0d0b9a9f16a843bd1b13cf897e78 Mon Sep 17 00:00:00 2001
+From: Yonit Halperin <yhalperi at redhat.com>
+Date: Thu, 10 May 2012 12:26:01 +0300
+Subject: [PATCH 7/8] server/mjpeg_encoder: Fix memory leak for the inital
+ output buffer given for each frame
+
+---
+ server/mjpeg_encoder.c |   11 +++--------
+ server/mjpeg_encoder.h |    5 +++++
+ 2 files changed, 8 insertions(+), 8 deletions(-)
+
+diff --git a/server/mjpeg_encoder.c b/server/mjpeg_encoder.c
+index 6b68549..74062f5 100644
+--- a/server/mjpeg_encoder.c
++++ b/server/mjpeg_encoder.c
+@@ -105,7 +105,6 @@ typedef struct {
+ 
+   unsigned char ** outbuffer;	/* target buffer */
+   size_t * outsize;
+-  unsigned char * newbuffer;	/* newly allocated buffer */
+   uint8_t * buffer;		/* start of buffer */
+   size_t bufsize;
+ } mem_destination_mgr;
+@@ -129,9 +128,7 @@ static boolean empty_mem_output_buffer(j_compress_ptr cinfo)
+ 
+   memcpy(nextbuffer, dest->buffer, dest->bufsize);
+ 
+-  free(dest->newbuffer);
+-
+-  dest->newbuffer = nextbuffer;
++  free(dest->buffer);
+ 
+   dest->pub.next_output_byte = nextbuffer + dest->bufsize;
+   dest->pub.free_in_buffer = dest->bufsize;
+@@ -184,12 +181,10 @@ spice_jpeg_mem_dest(j_compress_ptr cinfo,
+   dest->pub.term_destination = term_mem_destination;
+   dest->outbuffer = outbuffer;
+   dest->outsize = outsize;
+-  dest->newbuffer = NULL;
+-
+   if (*outbuffer == NULL || *outsize == 0) {
+     /* Allocate initial buffer */
+-    dest->newbuffer = *outbuffer = malloc(OUTPUT_BUF_SIZE);
+-    if (dest->newbuffer == NULL)
++    *outbuffer = malloc(OUTPUT_BUF_SIZE);
++    if (*outbuffer == NULL)
+       ERREXIT1(cinfo, JERR_OUT_OF_MEMORY, 10);
+     *outsize = OUTPUT_BUF_SIZE;
+   }
+diff --git a/server/mjpeg_encoder.h b/server/mjpeg_encoder.h
+index c43827f..62ef207 100644
+--- a/server/mjpeg_encoder.h
++++ b/server/mjpeg_encoder.h
+@@ -27,6 +27,11 @@ MJpegEncoder *mjpeg_encoder_new(int width, int height);
+ void mjpeg_encoder_destroy(MJpegEncoder *encoder);
+ 
+ uint8_t mjpeg_encoder_get_bytes_per_pixel(MJpegEncoder *encoder);
++
++/*
++ * *dest must be either NULL or allocated by malloc, since it might be freed
++ * during the encoding, if its size is too small.
++ */
+ int mjpeg_encoder_start_frame(MJpegEncoder *encoder, SpiceBitmapFmt format,
+                               uint8_t **dest, size_t *dest_len);
+ int mjpeg_encoder_encode_scanline(MJpegEncoder *encoder, uint8_t *src_pixels,
+-- 
+1.7.10.1
+
diff --git a/0008-server-mjpeg_encoder-fix-wrong-size-assigned-to-dest.patch b/0008-server-mjpeg_encoder-fix-wrong-size-assigned-to-dest.patch
new file mode 100644
index 0000000..6a9d987
--- /dev/null
+++ b/0008-server-mjpeg_encoder-fix-wrong-size-assigned-to-dest.patch
@@ -0,0 +1,28 @@
+From 29f70d96d44fc4eaf3ffb027ce22cd4f8509b2bf Mon Sep 17 00:00:00 2001
+From: Yonit Halperin <yhalperi at redhat.com>
+Date: Thu, 10 May 2012 14:01:39 +0300
+Subject: [PATCH 8/8] server/mjpeg_encoder: fix wrong size assigned to
+ dest_len
+
+It should have been the allocated size and not the occupied one.
+This led to a lot of unnecessary allocations and deallocations.
+---
+ server/mjpeg_encoder.c |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/server/mjpeg_encoder.c b/server/mjpeg_encoder.c
+index 74062f5..42fe352 100644
+--- a/server/mjpeg_encoder.c
++++ b/server/mjpeg_encoder.c
+@@ -144,7 +144,7 @@ static void term_mem_destination(j_compress_ptr cinfo)
+   mem_destination_mgr *dest = (mem_destination_mgr *) cinfo->dest;
+ 
+   *dest->outbuffer = dest->buffer;
+-  *dest->outsize = dest->bufsize - dest->pub.free_in_buffer;
++  *dest->outsize = dest->bufsize;
+ }
+ 
+ /*
+-- 
+1.7.10.1
+
diff --git a/spice.spec b/spice.spec
index 075852b..d400e5a 100644
--- a/spice.spec
+++ b/spice.spec
@@ -1,6 +1,6 @@
 Name:           spice
 Version:        0.10.1
-Release:        4%{?dist}
+Release:        5%{?dist}
 Summary:        Implements the SPICE protocol
 Group:          User Interface/Desktops
 License:        LGPLv2+
@@ -12,6 +12,9 @@ Patch1:         0002-server-red_memslots-use-QXLPHYSICAL-for-addresses.patch
 Patch2:         0003-server-red_worker-fix-for-case-where-ASSERT-is-compi.patch
 Patch3:         0004-server-red_memslots-don-t-assume-64-bit-environment.patch
 Patch4:         0005-server-red_worker-don-t-release-self_bitmap-unless-r.patch
+Patch5:         0006-server-reds-add-usbredir-to-recognized-channel-names.patch
+Patch6:         0007-server-mjpeg_encoder-Fix-memory-leak-for-the-inital-.patch
+Patch7:         0008-server-mjpeg_encoder-fix-wrong-size-assigned-to-dest.patch
 
 # https://bugzilla.redhat.com/show_bug.cgi?id=613529
 ExclusiveArch:  i686 x86_64
@@ -77,6 +80,9 @@ using spice-server, you will need to install spice-server-devel.
 %patch2 -p1
 %patch3 -p1
 %patch4 -p1
+%patch5 -p1
+%patch6 -p1
+%patch7 -p1
 
 %build
 %configure --enable-gui --enable-smartcard
@@ -120,7 +126,11 @@ fi
 %{_libdir}/pkgconfig/spice-server.pc
 
 %changelog
-* Tue May 13 2012 Alon Levy <alevy at redhat.com>
+* Mon May 14 2012 Alon Levy <alevy at redhat.com>
+- Fix mjpeg memory leak and bad behavior.
+- Add usbredir to list of channels for security purposes. (#819484)
+
+* Sun May 13 2012 Alon Levy <alevy at redhat.com>
 - Add double free fix. (#808936)
 
 %changelog


More information about the scm-commits mailing list