X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=inflate.c;h=bcafcf1a12368ce294aedd17eb30897561f023f6;hb=92249085071a973e2c0621b0415b93d2e48bb00d;hp=d5a8dfff5c54596ffcc58795ff25b8ec995844eb;hpb=4ee107046a0ffd91f6c60c787326a5e27b799f6d;p=debian%2Fgzip diff --git a/inflate.c b/inflate.c index d5a8dff..bcafcf1 100644 --- a/inflate.c +++ b/inflate.c @@ -1,6 +1,6 @@ /* Inflate deflated data - Copyright (C) 1997-1999, 2002, 2006, 2009-2012 Free Software Foundation, + Copyright (C) 1997-1999, 2002, 2006, 2009-2018 Free Software Foundation, Inc. This program is free software; you can redistribute it and/or modify @@ -116,10 +116,10 @@ */ #include -#include "tailor.h" #include +#include "tailor.h" #include "gzip.h" #define slide window @@ -219,13 +219,7 @@ static ush mask_bits[] = { #define GETBYTE() (inptr < insize ? inbuf[inptr++] : (wp = w, fill_inbuf(0))) -#ifdef CRYPT - uch cc; -# define NEXTBYTE() \ - (decrypt ? (cc = GETBYTE(), zdecode(cc), cc) : GETBYTE()) -#else -# define NEXTBYTE() (uch)GETBYTE() -#endif +#define NEXTBYTE() (uch)GETBYTE() #define NEEDBITS(n) {while(k<(n)){b|=((ulg)NEXTBYTE())<>=(n);k-=(n);} @@ -805,6 +799,12 @@ inflate_dynamic(void) NEEDBITS((unsigned)bl) j = (td = tl + ((unsigned)b & m))->b; DUMPBITS(j) + if (td->e == 99) + { + /* Invalid code. */ + huft_free (tl); + return 2; + } j = td->v.n; if (j < 16) /* length of code in bits (0..15) */ ll[i++] = l = j; /* save last length in l */