[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [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
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |