Package: lbzip2
Version: 0.23-1
Severity: normal
lbunzip2 makes a bad assumption about maximal bzip2 block size
and as a result it fails to decompress some valid bzip2
files (which are properly handled by bzip2 program).
Attached C program produces (writes to stdout) valid bz2 files
that can't be decompressed using lbzip2.
/*** p1.c ****************************************************************/
#if FILE_SIZE < 171
#undef FILE_SIZE
#define FILE_SIZE 171
#endif
p(x,n) {
static long b,k;
b = (b << n) + x, k += n;
while (k >= 8)
putchar((b >> (k -= 8)) & 0xff);
}
pb(b) { p(b,8); }
main() {
long i,j;
long crc=0x81b02d8b;
pb('B'); pb('Z'); pb('h'); pb('9'); /* magic */
p(0x314159,24); p(0x265359, 24); /* block header */
p((crc>>16)&0xffff,16); p(crc&0xffff,16);
p(0,1); /* block randomised? */
p(0,24); /* bwt index */
for (i=16+256-2; i--;) p(1,1); /* bitmap */
p(0,2);
p(2,3); p(3,15); p(0,3);
for (j=2; j--;) { /* code lens for both groups */
p(8,5); /* all codes are 8-bit */
for (i=255+j; i--;) p(0,1); /* delta */
if(!j) { for (i=FILE_SIZE-171;i--;) p(0xEB,8); p(0,1); }
}
pb('A'+1);
pb(0xff);
p(0x177245,24); p(0x385090,24);
p((crc>>16)&0xffff,16); p(crc&0xffff,16);
pb(0x42); pb(0x5A); pb(0x68); pb(0x39); pb(0x31); pb(0x41); pb(0x59);
pb(0x26); pb(0x53); pb(0x59); pb(0x21); pb(0x26); pb(0x1F); pb(0x78);
pb(0x00); pb(0x00); pb(0x00); pb(0xC4); pb(0x00); pb(0x00); pb(0x10);
pb(0x18); pb(0x00); pb(0x20); pb(0x00); pb(0x21); pb(0x98); pb(0x19);
pb(0x84); pb(0x61); pb(0x77); pb(0x24); pb(0x53); pb(0x85); pb(0x09);
pb(0x02); pb(0x12); pb(0x61); pb(0xF7); pb(0x80);
}
/*************************************************************************/
$ cc -DFILE_SIZE=1000000 -ot1 p1.c
$ ./t1 >t1a.bz2
$ bzcat t1a.bz2
ABC
$ lbzip2 -d -n 2 t1a.bz2
lbzip2: "t1a.bz2": compressed block too long
$ cc -DFILE_SIZE=2000000 -ot2 p1.c
$ ./t2 >t2a.bz2
$ bzcat t2a.bz2
ABC
$ lbzip2 -d -n 2 t2a.bz2
lbzip2: "t2a.bz2": missing bzip2 block header in full first input block
$
-- System Information:
Debian Release: squeeze/sid
APT prefers unstable
APT policy: (500, 'unstable'), (500, 'testing')
Architecture: i386 (i686)
Kernel: Linux 2.6.32-trunk-686 (SMP w/1 CPU core)
Locale: LANG=C, LC_CTYPE=C (charmap=ANSI_X3.4-1968)
Shell: /bin/sh linked to /bin/dash
Versions of packages lbzip2 depends on:
ii libbz2-1.0 1.0.5-4 high-quality block-sorting file co
ii libc6 2.10.2-8 Embedded GNU C Library: Shared lib
lbzip2 recommends no packages.
lbzip2 suggests no packages.
-- no debconf information
--
To UNSUBSCRIBE, email to [email protected]
with a subject of "unsubscribe". Trouble? Contact [email protected]