severe memory leak caused by broken palette_destroy() function
authorUlrich Obergfell <uobergfe@redhat.com>
Fri, 25 Mar 2011 08:45:54 +0000 (04:45 -0400)
committerAnthony Liguori <aliguori@us.ibm.com>
Fri, 25 Mar 2011 12:28:24 +0000 (07:28 -0500)
The following commit breaks the code of the function palette_destroy().

http://git.kernel.org/?p=virt/kvm/qemu-kvm.git;a=commit;h=e31e3694afef58ba191cbcc6875ec243e5971268

The broken code causes a severe memory leak of 'VncPalette' structures
because it never frees anything:

     70 void palette_destroy(VncPalette *palette)
     71 {
     72     if (palette == NULL) {
     73         qemu_free(palette);
     74     }
     75 }

Version 2 of the patch calls qemu_free() unconditionally.

Signed-off-by: Ulrich Obergfell <uobergfe@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
ui/vnc-palette.c

index c478060..13ece42 100644 (file)
@@ -69,9 +69,7 @@ void palette_init(VncPalette *palette, size_t max, int bpp)
 
 void palette_destroy(VncPalette *palette)
 {
-    if (palette == NULL) {
-        qemu_free(palette);
-    }
+    qemu_free(palette);
 }
 
 int palette_put(VncPalette *palette, uint32_t color)