From 246fdb38d7c2fb3054b8f8528e11dc8f17691750 Mon Sep 17 00:00:00 2001 From: Wiimm Date: Tue, 26 Mar 2024 10:35:38 +0100 Subject: SZS 2.42a --- project/src/lib-bzip2.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) (limited to 'project/src/lib-bzip2.c') diff --git a/project/src/lib-bzip2.c b/project/src/lib-bzip2.c index f3f088b..363efe0 100644 --- a/project/src/lib-bzip2.c +++ b/project/src/lib-bzip2.c @@ -84,7 +84,7 @@ int IsBZIP2 // 1..9: seems to be BZIP2 data; compression level is returned cvp data, // NULL or data to investigate - uint size // size of 'data' + int size // size of 'data' ) { const u8 *d = data; @@ -412,7 +412,7 @@ enumError EncodeBZIP2 uint *dest_written, // store num bytes written to 'dest', never NULL bool use_iobuf, // true: allow the usage of 'iobuf' uint header_size, // insert 'header_size' bytes before dest data - bool add_dec_size, // true: add decompressed size + bool add_dec_size, // true: add decompressed size before BZIP2 header const void *src, // source buffer uint src_size, // size of source buffer @@ -599,7 +599,7 @@ enumError DecodeBZIP2buf uint dest_size, // size of 'dest' uint *dest_written, // store num bytes written to 'dest', never NULL - const void *src, // source buffer, first 4 bytes = dest size + const void *src, // source buffer uint src_size // size of source buffer ) { @@ -616,7 +616,8 @@ enumError DecodeBZIP2buf DASSERT(dest_written); DASSERT(src); - uint dest_need = ntohl(*(u32*)src); +// uint dest_need = ntohl(*(u32*)src); + uint dest_need = dest_size; PRINT("DecodeBZIP2buf() %u -> %u,%u bytes\n",src_size,dest_size,dest_need); if ( be32(src+4) == 0x52415730 ) // "RAW0" == not compressed @@ -629,7 +630,7 @@ enumError DecodeBZIP2buf *dest_written = dest_need; int bzerror = BZ2_bzBuffToBuffDecompress ( (char*)dest, dest_written, - (char*)src+4, src_size-4, 0, 0 ); + (char*)src, src_size, 0, 0 ); if ( bzerror != BZ_OK ) return ERROR0(ERR_BZIP2, @@ -661,7 +662,7 @@ enumError DecodeBZIP2 u8 *dest = MALLOC(dest_size+header_size); memset(dest,0,header_size); - enumError err = DecodeBZIP2buf(dest+header_size,dest_size,dest_written,src,src_size); + enumError err = DecodeBZIP2buf(dest+header_size,dest_size,dest_written,src+4,src_size-4); if (err) { FREE(dest); -- cgit v1.3.1