WARNING - OLD ARCHIVES

This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
   
 
 
Xen 
 
Home Products Support Community News
 
   
 

xen-devel

[Xen-devel] Re: [PATCH] xc_inflate_buffer fix

To: David Lively <dlively@xxxxxxxxxxxxxxx>
Subject: [Xen-devel] Re: [PATCH] xc_inflate_buffer fix
From: David Lively <dlively@xxxxxxxxxxxxxxx>
Date: Wed, 15 Mar 2006 14:59:23 -0500
Cc: xen-devel@xxxxxxxxxxxxxxxxxxx
Delivery-date: Fri, 17 Mar 2006 10:34:56 +0000
Envelope-to: www-data@xxxxxxxxxxxxxxxxxxx
In-reply-to: <44185567.6070805@xxxxxxxxxxxxxxx>
List-help: <mailto:xen-devel-request@lists.xensource.com?subject=help>
List-id: Xen developer discussion <xen-devel.lists.xensource.com>
List-post: <mailto:xen-devel@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=unsubscribe>
References: <44185567.6070805@xxxxxxxxxxxxxxx>
Sender: xen-devel-bounces@xxxxxxxxxxxxxxxxxxx
User-agent: Mozilla Thunderbird 0.8 (X11/20040913)
Oops, forgot:

Signed-off-by: David Lively <dlively@xxxxxxxxxxxxxxx>

Dave

David Lively wrote:
Hi -
  I notice some of my initrds are failing to gunzip:
ERROR: inflate failed, sts -5
  These same initrds work fine with Ben Thomas' original
patch introducing xc_{linux,hvm}_build_mem.  The checked-in
version changed some declarations from unsigned char * to
char *, breaking the output length computation in xc_inflate_buffer.
  This patch assumes you want to keep using the signed char *
for the interface, so it simply inserts a few casts to unsigned.
Tested lightly, but the bug is pretty obvious once you notice
the signedness change ...

Dave


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

diff -r 1d741a415927 tools/libxc/xg_private.c
--- a/tools/libxc/xg_private.c  Wed Mar 15 11:48:33 2006 -0500
+++ b/tools/libxc/xg_private.c  Wed Mar 15 12:28:05 2006 -0500
@@ -77,10 +77,11 @@ char *xc_inflate_buffer(const char *in_b
         return (char *)in_buf;
     }
- out_len = in_buf[in_size-4] +
-        (256 * (in_buf[in_size-3] +
-                (256 * (in_buf[in_size-2] +
-                        (256 * in_buf[in_size-1])))));
+    out_len = (unsigned char)in_buf[in_size-4] +
+        (256 * ((unsigned char)in_buf[in_size-3] +
+                (256 * ((unsigned char)in_buf[in_size-2] +
+                        (256 * (unsigned char)in_buf[in_size-1])))));
+
     bzero(&zStream, sizeof(zStream));
     out_buf = malloc(out_len + 16);        /* Leave a little extra space */
     if ( out_buf == NULL )

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel

<Prev in Thread] Current Thread [Next in Thread>