|
|
|
|
|
|
|
|
|
|
xen-devel
[Xen-devel] Re: [PATCH] xc_inflate_buffer fix
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
|
|
|
|
|