Package: bzip2 Version: 1.0.5-5 Severity: serious Tags: security patch pending
On Mon, Sep 20, 2010 at 11:05:59AM +0000, Stefan Fritsch wrote:
>Mikolaj Izdebski has discovered an integer overflow flaw in the
>BZ2_decompress function in bzip2/libbz2. An attacker could use a
>crafted bz2 file to cause a denial of service (application crash)
>or potentially to execute arbitrary code. (CVE-2010-0405)
On Mon, Sep 13, 2010 at 06:18:30AM +0200, Stefan Fritsch wrote:
>diff -U 5 bzip2-1.0.5-orig/decompress.c bzip2-1.0.5-mod/decompress.c
>--- bzip2-1.0.5-orig/decompress.c 2007-12-09 13:31:31.000000000 +0100
>+++ bzip2-1.0.5-mod/decompress.c 2010-06-23 23:05:49.000000000 +0200
>@@ -379,10 +379,17 @@
> if (nextSym == BZ_RUNA || nextSym == BZ_RUNB) {
>
> es = -1;
> N = 1;
> do {
>+ /* Check that N doesn't get too big, so that es doesn't
>+ go negative. The maximum value that can be
>+ RUNA/RUNB encoded is equal to the block size (post
>+ the initial RLE), viz, 900k, so bounding N at 2
>+ million should guard against overflow without
>+ rejecting any legitimate inputs. */
>+ if (N >= 2*1024*1024) RETURN(BZ_DATA_ERROR);
> if (nextSym == BZ_RUNA) es = es + (0+1) * N; else
> if (nextSym == BZ_RUNB) es = es + (1+1) * N;
> N = N * 2;
> GET_MTF_VAL(BZ_X_MTF_3, BZ_X_MTF_4, nextSym);
> }
signature.asc
Description: Digital signature

