summaryrefslogtreecommitdiffstats
path: root/contrib/bzip2/decompress.c
diff options
context:
space:
mode:
authorobrien <obrien@FreeBSD.org>2010-11-09 18:32:57 +0000
committerobrien <obrien@FreeBSD.org>2010-11-09 18:32:57 +0000
commitbf51c23bf092b501e4499808929aa684edc3d4d4 (patch)
treed70cfbf8d3f028fc565310f4250fafd7aba34243 /contrib/bzip2/decompress.c
parente89c44deb646ed516b5dc67d99a4dd013cb405a5 (diff)
downloadFreeBSD-src-bf51c23bf092b501e4499808929aa684edc3d4d4.zip
FreeBSD-src-bf51c23bf092b501e4499808929aa684edc3d4d4.tar.gz
Upgrade to Bzip2 version 1.0.6.
Reviewed by: SO (cperciva)
Diffstat (limited to 'contrib/bzip2/decompress.c')
-rw-r--r--contrib/bzip2/decompress.c17
1 files changed, 15 insertions, 2 deletions
diff --git a/contrib/bzip2/decompress.c b/contrib/bzip2/decompress.c
index af1d4d0..311f566 100644
--- a/contrib/bzip2/decompress.c
+++ b/contrib/bzip2/decompress.c
@@ -8,8 +8,8 @@
This file is part of bzip2/libbzip2, a program and library for
lossless, block-sorting data compression.
- bzip2/libbzip2 version 1.0.5 of 10 December 2007
- Copyright (C) 1996-2007 Julian Seward <jseward@bzip.org>
+ bzip2/libbzip2 version 1.0.6 of 6 September 2010
+ Copyright (C) 1996-2010 Julian Seward <jseward@bzip.org>
Please read the WARNING, DISCLAIMER and PATENTS sections in the
README file.
@@ -492,15 +492,28 @@ Int32 BZ2_decompress ( DState* s )
RETURN(BZ_DATA_ERROR);
/*-- Set up cftab to facilitate generation of T^(-1) --*/
+ /* Check: unzftab entries in range. */
+ for (i = 0; i <= 255; i++) {
+ if (s->unzftab[i] < 0 || s->unzftab[i] > nblock)
+ RETURN(BZ_DATA_ERROR);
+ }
+ /* Actually generate cftab. */
s->cftab[0] = 0;
for (i = 1; i <= 256; i++) s->cftab[i] = s->unzftab[i-1];
for (i = 1; i <= 256; i++) s->cftab[i] += s->cftab[i-1];
+ /* Check: cftab entries in range. */
for (i = 0; i <= 256; i++) {
if (s->cftab[i] < 0 || s->cftab[i] > nblock) {
/* s->cftab[i] can legitimately be == nblock */
RETURN(BZ_DATA_ERROR);
}
}
+ /* Check: cftab entries non-descending. */
+ for (i = 1; i <= 256; i++) {
+ if (s->cftab[i-1] > s->cftab[i]) {
+ RETURN(BZ_DATA_ERROR);
+ }
+ }
s->state_out_len = 0;
s->state_out_ch = 0;
OpenPOWER on IntegriCloud