(root)/
gzip-1.13/
inflate.c
       1  /* Inflate deflated data
       2  
       3     Copyright (C) 1997-1999, 2002, 2006, 2009-2023 Free Software Foundation,
       4     Inc.
       5  
       6     This program is free software; you can redistribute it and/or modify
       7     it under the terms of the GNU General Public License as published by
       8     the Free Software Foundation; either version 3, or (at your option)
       9     any later version.
      10  
      11     This program is distributed in the hope that it will be useful,
      12     but WITHOUT ANY WARRANTY; without even the implied warranty of
      13     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
      14     GNU General Public License for more details.
      15  
      16     You should have received a copy of the GNU General Public License
      17     along with this program; if not, write to the Free Software Foundation,
      18     Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.  */
      19  
      20  /* Not copyrighted 1992 by Mark Adler
      21     version c10p1, 10 January 1993 */
      22  
      23  /* You can do whatever you like with this source file, though I would
      24     prefer that if you modify it and redistribute it that you include
      25     comments to that effect with your name and the date.  Thank you.
      26     [The history has been moved to the file ChangeLog.]
      27   */
      28  
      29  /*
      30     Inflate deflated (PKZIP's method 8 compressed) data.  The compression
      31     method searches for as much of the current string of bytes (up to a
      32     length of 258) in the previous 32K bytes.  If it doesn't find any
      33     matches (of at least length 3), it codes the next byte.  Otherwise, it
      34     codes the length of the matched string and its distance backwards from
      35     the current position.  There is a single Huffman code that codes both
      36     single bytes (called "literals") and match lengths.  A second Huffman
      37     code codes the distance information, which follows a length code.  Each
      38     length or distance code actually represents a base value and a number
      39     of "extra" (sometimes zero) bits to get to add to the base value.  At
      40     the end of each deflated block is a special end-of-block (EOB) literal/
      41     length code.  The decoding process is basically: get a literal/length
      42     code; if EOB then done; if a literal, emit the decoded byte; if a
      43     length then get the distance and emit the referred-to bytes from the
      44     sliding window of previously emitted data.
      45  
      46     There are (currently) three kinds of inflate blocks: stored, fixed, and
      47     dynamic.  The compressor deals with some chunk of data at a time, and
      48     decides which method to use on a chunk-by-chunk basis.  A chunk might
      49     typically be 32K or 64K.  If the chunk is uncompressible, then the
      50     "stored" method is used.  In this case, the bytes are simply stored as
      51     is, eight bits per byte, with none of the above coding.  The bytes are
      52     preceded by a count, since there is no longer an EOB code.
      53  
      54     If the data is compressible, then either the fixed or dynamic methods
      55     are used.  In the dynamic method, the compressed data is preceded by
      56     an encoding of the literal/length and distance Huffman codes that are
      57     to be used to decode this block.  The representation is itself Huffman
      58     coded, and so is preceded by a description of that code.  These code
      59     descriptions take up a little space, and so for small blocks, there is
      60     a predefined set of codes, called the fixed codes.  The fixed method is
      61     used if the block codes up smaller that way (usually for quite small
      62     chunks), otherwise the dynamic method is used.  In the latter case, the
      63     codes are customized to the probabilities in the current block, and so
      64     can code it much better than the pre-determined fixed codes.
      65  
      66     The Huffman codes themselves are decoded using a multi-level table
      67     lookup, in order to maximize the speed of decoding plus the speed of
      68     building the decoding tables.  See the comments below that precede the
      69     lbits and dbits tuning parameters.
      70   */
      71  
      72  
      73  /*
      74     Notes beyond the 1.93a appnote.txt:
      75  
      76     1. Distance pointers never point before the beginning of the output
      77        stream.
      78     2. Distance pointers can point back across blocks, up to 32k away.
      79     3. There is an implied maximum of 7 bits for the bit length table and
      80        15 bits for the actual data.
      81     4. If only one code exists, then it is encoded using one bit.  (Zero
      82        would be more efficient, but perhaps a little confusing.)  If two
      83        codes exist, they are coded using one bit each (0 and 1).
      84     5. There is no way of sending zero distance codes--a dummy must be
      85        sent if there are none.  (History: a pre 2.0 version of PKZIP would
      86        store blocks with no distance codes, but this was discovered to be
      87        too harsh a criterion.)  Valid only for 1.93a.  2.04c does allow
      88        zero distance codes, which is sent as one code of zero bits in
      89        length.
      90     6. There are up to 286 literal/length codes.  Code 256 represents the
      91        end-of-block.  Note however that the static length tree defines
      92        288 codes just to fill out the Huffman codes.  Codes 286 and 287
      93        cannot be used though, since there is no length base or extra bits
      94        defined for them.  Similarly, there are up to 30 distance codes.
      95        However, static trees define 32 codes (all 5 bits) to fill out the
      96        Huffman codes, but the last two had better not show up in the data.
      97     7. Unzip can check dynamic Huffman blocks for complete code sets.
      98        The exception is that a single code would not be complete (see #4).
      99     8. The five bits following the block type is really the number of
     100        literal codes sent minus 257.
     101     9. Length codes 8,16,16 are interpreted as 13 length codes of 8 bits
     102        (1+6+6).  Therefore, to output three times the length, you output
     103        three codes (1+1+1), whereas to output four times the same length,
     104        you only need two codes (1+3).  Hmm.
     105    10. In the tree reconstruction algorithm, Code = Code + Increment
     106        only if BitLength(i) is not zero.  (Pretty obvious.)
     107    11. Correction: 4 Bits: # of Bit Length codes - 4     (4 - 19)
     108    12. Note: length code 284 can represent 227-258, but length code 285
     109        really is 258.  The last length deserves its own, short code
     110        since it gets used a lot in very redundant files.  The length
     111        258 is special since 258 - 3 (the min match length) is 255.
     112    13. The literal/length and distance code bit lengths are read as a
     113        single stream of lengths.  It is possible (and advantageous) for
     114        a repeat code (16, 17, or 18) to go across the boundary between
     115        the two sets of lengths.
     116   */
     117  
     118  #include <config.h>
     119  
     120  #include <stdlib.h>
     121  
     122  #include "tailor.h"
     123  #include "gzip.h"
     124  #define slide window
     125  
     126  /* Huffman code lookup table entry--this entry is four bytes for machines
     127     that have 16-bit pointers (e.g. PC's in the small or medium model).
     128     Valid extra bits are 0..13.  e == 15 is EOB (end of block), e == 16
     129     means that v is a literal, 16 < e < 32 means that v is a pointer to
     130     the next table, which codes e - 16 bits, and lastly e == 99 indicates
     131     an unused code.  If a code with e == 99 is looked up, this implies an
     132     error in the data. */
     133  struct huft {
     134    uch e;                /* number of extra bits or operation */
     135    uch b;                /* number of bits in this code or subcode */
     136    union {
     137      ush n;              /* literal, length base, or distance base */
     138      struct huft *t;     /* pointer to next level of table */
     139    } v;
     140  };
     141  
     142  
     143  /* Function prototypes */
     144  static int huft_free (struct huft *);
     145  
     146  
     147  /* The inflate algorithm uses a sliding 32K byte window on the uncompressed
     148     stream to find repeated byte strings.  This is implemented here as a
     149     circular buffer.  The index is updated simply by incrementing and then
     150     and'ing with 0x7fff (32K-1). */
     151  /* It is left to other modules to supply the 32K area.  It is assumed
     152     to be usable as if it were declared "uch slide[32768];" or as just
     153     "uch *slide;" and then malloc'ed in the latter case.  The definition
     154     must be in unzip.h, included above. */
     155  /* unsigned wp;             current position in slide */
     156  static bool fresh;
     157  #define wp outcnt
     158  #define flush_output(w) (fresh = false, wp = (w), flush_window ())
     159  
     160  /* Tables for deflate from PKZIP's appnote.txt. */
     161  static unsigned border[] = {    /* Order of the bit length code lengths */
     162          16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15};
     163  static ush cplens[] = {         /* Copy lengths for literal codes 257..285 */
     164          3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 19, 23, 27, 31,
     165          35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258, 0, 0};
     166          /* note: see note #13 above about the 258 in this list. */
     167  static ush cplext[] = {         /* Extra bits for literal codes 257..285 */
     168          0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2,
     169          3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 0, 99, 99}; /* 99==invalid */
     170  static ush cpdist[] = {         /* Copy offsets for distance codes 0..29 */
     171          1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193,
     172          257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145,
     173          8193, 12289, 16385, 24577};
     174  static ush cpdext[] = {         /* Extra bits for distance codes */
     175          0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6,
     176          7, 7, 8, 8, 9, 9, 10, 10, 11, 11,
     177          12, 12, 13, 13};
     178  
     179  
     180  
     181  /* Macros for inflate() bit peeking and grabbing.
     182     The usage is:
     183  
     184          NEEDBITS(j)
     185          x = b & mask_bits[j];
     186          DUMPBITS(j)
     187  
     188     where NEEDBITS makes sure that b has at least j bits in it, and
     189     DUMPBITS removes the bits from b.  The macros use the variable k
     190     for the number of bits in b.  Normally, b and k are register
     191     variables for speed, and are initialized at the beginning of a
     192     routine that uses these macros from a global bit buffer and count.
     193     The macros also use the variable w, which is a cached copy of wp.
     194  
     195     If we assume that EOB will be the longest code, then we will never
     196     ask for bits with NEEDBITS that are beyond the end of the stream.
     197     So, NEEDBITS should not read any more bytes than are needed to
     198     meet the request.  Then no bytes need to be "returned" to the buffer
     199     at the end of the last block.
     200  
     201     However, this assumption is not true for fixed blocks--the EOB code
     202     is 7 bits, but the other literal/length codes can be 8 or 9 bits.
     203     (The EOB code is shorter than other codes because fixed blocks are
     204     generally short.  So, while a block always has an EOB, many other
     205     literal/length codes have a significantly lower probability of
     206     showing up at all.)  However, by making the first table have a
     207     lookup of seven bits, the EOB code will be found in that first
     208     lookup, and so will not require that too many bits be pulled from
     209     the stream.
     210   */
     211  
     212  static ulg bb;                         /* bit buffer */
     213  static unsigned bk;                    /* bits in bit buffer */
     214  
     215  static ush mask_bits[] = {
     216      0x0000,
     217      0x0001, 0x0003, 0x0007, 0x000f, 0x001f, 0x003f, 0x007f, 0x00ff,
     218      0x01ff, 0x03ff, 0x07ff, 0x0fff, 0x1fff, 0x3fff, 0x7fff, 0xffff
     219  };
     220  
     221  #define GETBYTE() (inptr < insize ? inbuf[inptr++] : (wp = w, fill_inbuf(0)))
     222  
     223  #define NEXTBYTE()  (uch)GETBYTE()
     224  #define NEEDBITS(n) {while(k<(n)){b|=((ulg)NEXTBYTE())<<k;k+=8;}}
     225  #define DUMPBITS(n) {b>>=(n);k-=(n);}
     226  
     227  
     228  /*
     229     Huffman code decoding is performed using a multi-level table lookup.
     230     The fastest way to decode is to simply build a lookup table whose
     231     size is determined by the longest code.  However, the time it takes
     232     to build this table can also be a factor if the data being decoded
     233     is not very long.  The most common codes are necessarily the
     234     shortest codes, so those codes dominate the decoding time, and hence
     235     the speed.  The idea is you can have a shorter table that decodes the
     236     shorter, more probable codes, and then point to subsidiary tables for
     237     the longer codes.  The time it costs to decode the longer codes is
     238     then traded against the time it takes to make longer tables.
     239  
     240     This results of this trade are in the variables lbits and dbits
     241     below.  lbits is the number of bits the first level table for literal/
     242     length codes can decode in one step, and dbits is the same thing for
     243     the distance codes.  Subsequent tables are also less than or equal to
     244     those sizes.  These values may be adjusted either when all of the
     245     codes are shorter than that, in which case the longest code length in
     246     bits is used, or when the shortest code is *longer* than the requested
     247     table size, in which case the length of the shortest code in bits is
     248     used.
     249  
     250     There are two different values for the two tables, since they code a
     251     different number of possibilities each.  The literal/length table
     252     codes 286 possible values, or in a flat code, a little over eight
     253     bits.  The distance table codes 30 possible values, or a little less
     254     than five bits, flat.  The optimum values for speed end up being
     255     about one bit more than those, so lbits is 8+1 and dbits is 5+1.
     256     The optimum values may differ though from machine to machine, and
     257     possibly even between compilers.  Your mileage may vary.
     258   */
     259  
     260  
     261  static int lbits = 9;   /* bits in base literal/length lookup table */
     262  static int dbits = 6;   /* bits in base distance lookup table */
     263  
     264  
     265  /* If BMAX needs to be larger than 16, then h and x[] should be ulg. */
     266  #define BMAX 16         /* maximum bit length of any code (16 for explode) */
     267  #define N_MAX 288       /* maximum number of codes in any set */
     268  
     269  
     270  static unsigned hufts;  /* track memory usage */
     271  
     272  
     273  static int
     274  huft_build(
     275  unsigned *b,            /* code lengths in bits (all assumed <= BMAX) */
     276  unsigned n,             /* number of codes (assumed <= N_MAX) */
     277  unsigned s,             /* number of simple-valued codes (0..s-1) */
     278  ush *d,                 /* list of base values for non-simple codes */
     279  ush *e,                 /* list of extra bits for non-simple codes */
     280  struct huft **t,        /* result: starting table */
     281  int *m                  /* maximum lookup bits, returns actual */
     282             )
     283  /* Given a list of code lengths and a maximum table size, make a set of
     284     tables to decode that set of codes.  Return zero on success, one if
     285     the given code set is incomplete (the tables are still built in this
     286     case), two if the input is invalid (all zero length codes or an
     287     oversubscribed set of lengths), and three if not enough memory. */
     288  {
     289    unsigned a;                   /* counter for codes of length k */
     290    unsigned c[BMAX+1];           /* bit length count table */
     291    unsigned f;                   /* i repeats in table every f entries */
     292    int g;                        /* maximum code length */
     293    int h;                        /* table level */
     294    register unsigned i;          /* counter, current code */
     295    register unsigned j;          /* counter */
     296    register int k;               /* number of bits in current code */
     297    int l;                        /* bits per table (returned in m) */
     298    register unsigned *p;         /* pointer into c[], b[], or v[] */
     299    register struct huft *q;      /* points to current table */
     300    struct huft r;                /* table entry for structure assignment */
     301    struct huft *u[BMAX];         /* table stack */
     302    unsigned v[N_MAX];            /* values in order of bit length */
     303    register int w;               /* bits before this table == (l * h) */
     304    unsigned x[BMAX+1];           /* bit offsets, then code stack */
     305    unsigned *xp;                 /* pointer into x */
     306    int y;                        /* number of dummy codes added */
     307    unsigned z;                   /* number of entries in current table */
     308  
     309  
     310    /* Generate counts for each bit length */
     311    memzero(c, sizeof(c));
     312    p = b;  i = n;
     313    do {
     314  #ifdef DEBUG
     315      if (1 < verbose && *p)
     316        {
     317          if (' ' <= n - i && n - i <= '~')
     318            {
     319              char ch = n - i;
     320              fprintf (stderr, "%c %u\n", ch, *p);
     321            }
     322          else
     323            fprintf (stderr, "0x%x %u\n", n - i, *p);
     324        }
     325  #endif
     326      c[*p]++;                    /* assume all entries <= BMAX */
     327      p++;                      /* Can't combine with above line (Solaris bug) */
     328    } while (--i);
     329    if (c[0] == n)                /* null input--all zero length codes */
     330    {
     331      q = (struct huft *) malloc (3 * sizeof *q);
     332      if (!q)
     333        return 3;
     334      hufts += 3;
     335      q[0].v.t = (struct huft *) NULL;
     336      q[1].e = 99;    /* invalid code marker */
     337      q[1].b = 1;
     338      q[2].e = 99;    /* invalid code marker */
     339      q[2].b = 1;
     340      *t = q + 1;
     341      *m = 1;
     342      return 0;
     343    }
     344  
     345  
     346    /* Find minimum and maximum length, bound *m by those */
     347    l = *m;
     348    for (j = 1; j <= BMAX; j++)
     349      if (c[j])
     350        break;
     351    k = j;                        /* minimum code length */
     352    if ((unsigned)l < j)
     353      l = j;
     354    for (i = BMAX; i; i--)
     355      if (c[i])
     356        break;
     357    g = i;                        /* maximum code length */
     358    if ((unsigned)l > i)
     359      l = i;
     360    *m = l;
     361  
     362  
     363    /* Adjust last length count to fill out codes, if needed */
     364    for (y = 1 << j; j < i; j++, y <<= 1)
     365      if ((y -= c[j]) < 0)
     366        return 2;                 /* bad input: more codes than bits */
     367    if ((y -= c[i]) < 0)
     368      return 2;
     369    c[i] += y;
     370  
     371  
     372    /* Generate starting offsets into the value table for each length */
     373    x[1] = j = 0;
     374    p = c + 1;  xp = x + 2;
     375    while (--i) {                 /* note that i == g from above */
     376      *xp++ = (j += *p++);
     377    }
     378  
     379  
     380    /* Make a table of values in order of bit lengths */
     381    p = b;  i = 0;
     382    do {
     383      if ((j = *p++) != 0)
     384        v[x[j]++] = i;
     385    } while (++i < n);
     386    n = x[g];                   /* set n to length of v */
     387  
     388  
     389    /* Generate the Huffman codes and for each, make the table entries */
     390    x[0] = i = 0;                 /* first Huffman code is zero */
     391    p = v;                        /* grab values in bit order */
     392    h = -1;                       /* no tables yet--level -1 */
     393    w = -l;                       /* bits decoded == (l * h) */
     394    u[0] = (struct huft *)NULL;   /* just to keep compilers happy */
     395    q = (struct huft *)NULL;      /* ditto */
     396    z = 0;                        /* ditto */
     397  
     398    /* go through the bit lengths (k already is bits in shortest code) */
     399    for (; k <= g; k++)
     400    {
     401      a = c[k];
     402      while (a--)
     403      {
     404        /* here i is the Huffman code of length k bits for value *p */
     405        /* make tables up to required level */
     406        while (k > w + l)
     407        {
     408          h++;
     409          w += l;                 /* previous table always l bits */
     410  
     411          /* compute minimum size table less than or equal to l bits */
     412          z = (z = g - w) > (unsigned)l ? l : z;  /* upper limit on table size */
     413          if ((f = 1 << (j = k - w)) > a + 1)     /* try a k-w bit table */
     414          {                       /* too few codes for k-w bit table */
     415            f -= a + 1;           /* deduct codes from patterns left */
     416            xp = c + k;
     417            if (j < z)
     418              while (++j < z)       /* try smaller tables up to z bits */
     419              {
     420                if ((f <<= 1) <= *++xp)
     421                  break;            /* enough codes to use up j bits */
     422                f -= *xp;           /* else deduct codes from patterns */
     423              }
     424          }
     425          z = 1 << j;             /* table entries for j-bit table */
     426  
     427          /* allocate and link in new table */
     428          if ((q = (struct huft *)malloc((z + 1)*sizeof(struct huft))) ==
     429              (struct huft *)NULL)
     430          {
     431            if (h)
     432              huft_free(u[0]);
     433            return 3;             /* not enough memory */
     434          }
     435          hufts += z + 1;         /* track memory usage */
     436          *t = q + 1;             /* link to list for huft_free() */
     437          *(t = &(q->v.t)) = (struct huft *)NULL;
     438          u[h] = ++q;             /* table starts after link */
     439  
     440          /* connect to last table, if there is one */
     441          if (h)
     442          {
     443            x[h] = i;             /* save pattern for backing up */
     444            r.b = (uch)l;         /* bits to dump before this table */
     445            r.e = (uch)(16 + j);  /* bits in this table */
     446            r.v.t = q;            /* pointer to this table */
     447            j = i >> (w - l);     /* (get around Turbo C bug) */
     448            u[h-1][j] = r;        /* connect to last table */
     449          }
     450        }
     451  
     452        /* set up table entry in r */
     453        r.b = (uch)(k - w);
     454        if (p >= v + n)
     455          r.e = 99;               /* out of values--invalid code */
     456        else if (*p < s)
     457        {
     458          r.e = (uch)(*p < 256 ? 16 : 15);    /* 256 is end-of-block code */
     459          r.v.n = (ush)(*p);             /* simple code is just the value */
     460          p++;                           /* one compiler does not like *p++ */
     461        }
     462        else
     463        {
     464          r.e = (uch)e[*p - s];   /* non-simple--look up in lists */
     465          r.v.n = d[*p++ - s];
     466        }
     467  
     468        /* fill code-like entries with r */
     469        f = 1 << (k - w);
     470        for (j = i >> w; j < z; j += f)
     471          q[j] = r;
     472  
     473        /* backwards increment the k-bit code i */
     474        for (j = 1 << (k - 1); i & j; j >>= 1)
     475          i ^= j;
     476        i ^= j;
     477  
     478        /* backup over finished tables */
     479        while ((i & ((1 << w) - 1)) != x[h])
     480        {
     481          h--;                    /* don't need to update q */
     482          w -= l;
     483        }
     484      }
     485    }
     486  
     487  
     488    /* Return true (1) if we were given an incomplete table */
     489    return y != 0 && g != 1;
     490  }
     491  
     492  
     493  
     494  /* Free the malloc'ed tables T built by huft_build(), which makes a linked
     495     list of the tables it made, with the links in a dummy first entry of
     496     each table. */
     497  static int
     498  huft_free(struct huft *t)
     499  {
     500    register struct huft *p, *q;
     501  
     502  
     503    /* Go through linked list, freeing from the malloced (t[-1]) address. */
     504    p = t;
     505    while (p != (struct huft *)NULL)
     506    {
     507      q = (--p)->v.t;
     508      free(p);
     509      p = q;
     510    }
     511    return 0;
     512  }
     513  
     514  
     515  /* tl, td:   literal/length and distance decoder tables */
     516  /* bl, bd:   number of bits decoded by tl[] and td[] */
     517  /* inflate (decompress) the codes in a deflated (compressed) block.
     518     Return an error code or zero if it all goes ok. */
     519  static int
     520  inflate_codes(struct huft *tl, struct huft *td, int bl, int bd)
     521  {
     522    register unsigned e;  /* table entry flag/number of extra bits */
     523    unsigned n, d;        /* length and index for copy */
     524    unsigned w;           /* current window position */
     525    struct huft *t;       /* pointer to table entry */
     526    unsigned ml, md;      /* masks for bl and bd bits */
     527    register ulg b;       /* bit buffer */
     528    register unsigned k;  /* number of bits in bit buffer */
     529  
     530  
     531    /* make local copies of globals */
     532    b = bb;                       /* initialize bit buffer */
     533    k = bk;
     534    w = wp;                       /* initialize window position */
     535  
     536    /* inflate the coded data */
     537    ml = mask_bits[bl];           /* precompute masks for speed */
     538    md = mask_bits[bd];
     539    for (;;)                      /* do until end of block */
     540    {
     541      NEEDBITS((unsigned)bl)
     542      if ((e = (t = tl + ((unsigned)b & ml))->e) > 16)
     543        do {
     544          if (e == 99)
     545            return 1;
     546          DUMPBITS(t->b)
     547          e -= 16;
     548          NEEDBITS(e)
     549        } while ((e = (t = t->v.t + ((unsigned)b & mask_bits[e]))->e) > 16);
     550      DUMPBITS(t->b)
     551      if (e == 16)                /* then it's a literal */
     552      {
     553        slide[w++] = (uch)t->v.n;
     554        Tracevv((stderr, "%c", slide[w-1]));
     555        if (w == WSIZE)
     556        {
     557          flush_output(w);
     558          w = 0;
     559        }
     560      }
     561      else                        /* it's an EOB or a length */
     562      {
     563        /* exit if end of block */
     564        if (e == 15)
     565          break;
     566  
     567        /* get length of block to copy */
     568        NEEDBITS(e)
     569        n = t->v.n + ((unsigned)b & mask_bits[e]);
     570        DUMPBITS(e);
     571  
     572        /* decode distance of block to copy */
     573        NEEDBITS((unsigned)bd)
     574        if ((e = (t = td + ((unsigned)b & md))->e) > 16)
     575          do {
     576            if (e == 99)
     577              return 1;
     578            DUMPBITS(t->b)
     579            e -= 16;
     580            NEEDBITS(e)
     581          } while ((e = (t = t->v.t + ((unsigned)b & mask_bits[e]))->e) > 16);
     582        DUMPBITS(t->b)
     583        NEEDBITS(e)
     584        d = w - t->v.n - ((unsigned)b & mask_bits[e]);
     585        DUMPBITS(e)
     586        if (fresh && w <= d)
     587          return 1;
     588        Tracevv ((stderr, "\\[%u,%u]", w - d, n));
     589  
     590        /* do the copy */
     591        do {
     592          n -= (e = (e = WSIZE - ((d &= WSIZE-1) > w ? d : w)) > n ? n : e);
     593  #ifndef DEBUG
     594          if (e <= (d < w ? w - d : d - w))
     595          {
     596            memcpy(slide + w, slide + d, e);
     597            w += e;
     598            d += e;
     599          }
     600          else                      /* do it slow to avoid memcpy() overlap */
     601  #endif
     602            do {
     603              slide[w++] = slide[d++];
     604              Tracevv((stderr, "%c", slide[w-1]));
     605            } while (--e);
     606          if (w == WSIZE)
     607          {
     608            flush_output(w);
     609            w = 0;
     610          }
     611        } while (n);
     612      }
     613    }
     614  
     615  
     616    /* restore the globals from the locals */
     617    wp = w;                       /* restore global window pointer */
     618    bb = b;                       /* restore global bit buffer */
     619    bk = k;
     620  
     621    /* done */
     622    return 0;
     623  }
     624  
     625  
     626  
     627  /* "decompress" an inflated type 0 (stored) block. */
     628  static int
     629  inflate_stored(void)
     630  {
     631    unsigned n;           /* number of bytes in block */
     632    unsigned w;           /* current window position */
     633    register ulg b;       /* bit buffer */
     634    register unsigned k;  /* number of bits in bit buffer */
     635  
     636  
     637    /* make local copies of globals */
     638    b = bb;                       /* initialize bit buffer */
     639    k = bk;
     640    w = wp;                       /* initialize window position */
     641  
     642  
     643    /* go to byte boundary */
     644    n = k & 7;
     645    DUMPBITS(n);
     646  
     647  
     648    /* get the length and its complement */
     649    NEEDBITS(16)
     650    n = ((unsigned)b & 0xffff);
     651    DUMPBITS(16)
     652    NEEDBITS(16)
     653    if (n != (unsigned)((~b) & 0xffff))
     654      return 1;                   /* error in compressed data */
     655    DUMPBITS(16)
     656  
     657  
     658    /* read and output the compressed data */
     659    while (n--)
     660    {
     661      NEEDBITS(8)
     662      slide[w++] = (uch)b;
     663      if (w == WSIZE)
     664      {
     665        flush_output(w);
     666        w = 0;
     667      }
     668      DUMPBITS(8)
     669    }
     670  
     671  
     672    /* restore the globals from the locals */
     673    wp = w;                       /* restore global window pointer */
     674    bb = b;                       /* restore global bit buffer */
     675    bk = k;
     676    return 0;
     677  }
     678  
     679  
     680  
     681  /* decompress an inflated type 1 (fixed Huffman codes) block.  We should
     682     either replace this with a custom decoder, or at least precompute the
     683     Huffman tables. */
     684  static int
     685  inflate_fixed(void)
     686  {
     687    int i;                /* temporary variable */
     688    struct huft *tl;      /* literal/length code table */
     689    struct huft *td;      /* distance code table */
     690    int bl;               /* lookup bits for tl */
     691    int bd;               /* lookup bits for td */
     692    unsigned l[288];      /* length list for huft_build */
     693  
     694  
     695    /* set up literal table */
     696    for (i = 0; i < 144; i++)
     697      l[i] = 8;
     698    for (; i < 256; i++)
     699      l[i] = 9;
     700    for (; i < 280; i++)
     701      l[i] = 7;
     702    for (; i < 288; i++)          /* make a complete, but wrong code set */
     703      l[i] = 8;
     704    bl = 7;
     705    if ((i = huft_build(l, 288, 257, cplens, cplext, &tl, &bl)) != 0)
     706      return i;
     707  
     708  
     709    /* set up distance table */
     710    for (i = 0; i < 30; i++)      /* make an incomplete code set */
     711      l[i] = 5;
     712    bd = 5;
     713    if ((i = huft_build(l, 30, 0, cpdist, cpdext, &td, &bd)) > 1)
     714    {
     715      huft_free(tl);
     716      return i;
     717    }
     718  
     719  
     720    /* decompress until an end-of-block code */
     721    if (inflate_codes(tl, td, bl, bd))
     722      return 1;
     723  
     724  
     725    /* free the decoding tables, return */
     726    huft_free(tl);
     727    huft_free(td);
     728    return 0;
     729  }
     730  
     731  
     732  
     733  /* decompress an inflated type 2 (dynamic Huffman codes) block. */
     734  static int
     735  inflate_dynamic(void)
     736  {
     737    int i;                /* temporary variables */
     738    unsigned j;
     739    unsigned l;           /* last length */
     740    unsigned m;           /* mask for bit lengths table */
     741    unsigned n;           /* number of lengths to get */
     742    unsigned w;           /* current window position */
     743    struct huft *tl;      /* literal/length code table */
     744    struct huft *td;      /* distance code table */
     745    int bl;               /* lookup bits for tl */
     746    int bd;               /* lookup bits for td */
     747    unsigned nb;          /* number of bit length codes */
     748    unsigned nl;          /* number of literal/length codes */
     749    unsigned nd;          /* number of distance codes */
     750  #ifdef PKZIP_BUG_WORKAROUND
     751    unsigned ll[288+32];  /* literal/length and distance code lengths */
     752  #else
     753    unsigned ll[286+30];  /* literal/length and distance code lengths */
     754  #endif
     755    register ulg b;       /* bit buffer */
     756    register unsigned k;  /* number of bits in bit buffer */
     757  
     758  
     759    /* make local bit buffer */
     760    b = bb;
     761    k = bk;
     762    w = wp;
     763  
     764  
     765    /* read in table lengths */
     766    NEEDBITS(5)
     767    nl = 257 + ((unsigned)b & 0x1f);      /* number of literal/length codes */
     768    DUMPBITS(5)
     769    NEEDBITS(5)
     770    nd = 1 + ((unsigned)b & 0x1f);        /* number of distance codes */
     771    DUMPBITS(5)
     772    NEEDBITS(4)
     773    nb = 4 + ((unsigned)b & 0xf);         /* number of bit length codes */
     774    DUMPBITS(4)
     775  #ifdef PKZIP_BUG_WORKAROUND
     776    if (nl > 288 || nd > 32)
     777  #else
     778    if (nl > 286 || nd > 30)
     779  #endif
     780      return 1;                   /* bad lengths */
     781  
     782  
     783    /* read in bit-length-code lengths */
     784    for (j = 0; j < nb; j++)
     785    {
     786      NEEDBITS(3)
     787      ll[border[j]] = (unsigned)b & 7;
     788      DUMPBITS(3)
     789    }
     790    for (; j < 19; j++)
     791      ll[border[j]] = 0;
     792  
     793  
     794    /* build decoding table for trees--single level, 7 bit lookup */
     795    bl = 7;
     796    if ((i = huft_build(ll, 19, 19, NULL, NULL, &tl, &bl)) != 0)
     797    {
     798      if (i == 1)
     799        huft_free(tl);
     800      return i;                   /* incomplete code set */
     801    }
     802  
     803    if (tl == NULL)		/* Grrrhhh */
     804          return 2;
     805  
     806    /* read in literal and distance code lengths */
     807    n = nl + nd;
     808    m = mask_bits[bl];
     809    i = l = 0;
     810    while ((unsigned)i < n)
     811    {
     812      NEEDBITS((unsigned)bl)
     813      j = (td = tl + ((unsigned)b & m))->b;
     814      DUMPBITS(j)
     815      if (td->e == 99)
     816        {
     817          /* Invalid code.  */
     818          huft_free (tl);
     819          return 2;
     820        }
     821      j = td->v.n;
     822      if (j < 16)                 /* length of code in bits (0..15) */
     823        ll[i++] = l = j;          /* save last length in l */
     824      else if (j == 16)           /* repeat last length 3 to 6 times */
     825      {
     826        NEEDBITS(2)
     827        j = 3 + ((unsigned)b & 3);
     828        DUMPBITS(2)
     829        if ((unsigned)i + j > n)
     830          return 1;
     831        while (j--)
     832          ll[i++] = l;
     833      }
     834      else if (j == 17)           /* 3 to 10 zero length codes */
     835      {
     836        NEEDBITS(3)
     837        j = 3 + ((unsigned)b & 7);
     838        DUMPBITS(3)
     839        if ((unsigned)i + j > n)
     840          return 1;
     841        while (j--)
     842          ll[i++] = 0;
     843        l = 0;
     844      }
     845      else                        /* j == 18: 11 to 138 zero length codes */
     846      {
     847        NEEDBITS(7)
     848        j = 11 + ((unsigned)b & 0x7f);
     849        DUMPBITS(7)
     850        if ((unsigned)i + j > n)
     851          return 1;
     852        while (j--)
     853          ll[i++] = 0;
     854        l = 0;
     855      }
     856    }
     857  
     858  
     859    /* free decoding table for trees */
     860    huft_free(tl);
     861  
     862  
     863    /* restore the global bit buffer */
     864    bb = b;
     865    bk = k;
     866  
     867  
     868    /* build the decoding tables for literal/length and distance codes */
     869    bl = lbits;
     870    if ((i = huft_build(ll, nl, 257, cplens, cplext, &tl, &bl)) != 0)
     871    {
     872      if (i == 1) {
     873        Trace ((stderr, " incomplete literal tree\n"));
     874        huft_free(tl);
     875      }
     876      return i;                   /* incomplete code set */
     877    }
     878    bd = dbits;
     879    if ((i = huft_build(ll + nl, nd, 0, cpdist, cpdext, &td, &bd)) != 0)
     880    {
     881      if (i == 1) {
     882        Trace ((stderr, " incomplete distance tree\n"));
     883  #ifdef PKZIP_BUG_WORKAROUND
     884        i = 0;
     885      }
     886  #else
     887        huft_free(td);
     888      }
     889      huft_free(tl);
     890      return i;                   /* incomplete code set */
     891  #endif
     892    }
     893  
     894  
     895    {
     896      /* decompress until an end-of-block code */
     897      int err = inflate_codes(tl, td, bl, bd) ? 1 : 0;
     898  
     899      /* free the decoding tables */
     900      huft_free(tl);
     901      huft_free(td);
     902  
     903      return err;
     904    }
     905  }
     906  
     907  
     908  
     909  /* decompress an inflated block */
     910  /* E is the last block flag */
     911  static int inflate_block(int *e)
     912  {
     913    unsigned t;           /* block type */
     914    unsigned w;           /* current window position */
     915    register ulg b;       /* bit buffer */
     916    register unsigned k;  /* number of bits in bit buffer */
     917  
     918  
     919    /* make local bit buffer */
     920    b = bb;
     921    k = bk;
     922    w = wp;
     923  
     924  
     925    /* read in last block bit */
     926    NEEDBITS(1)
     927    *e = (int)b & 1;
     928    DUMPBITS(1)
     929  
     930  
     931    /* read in block type */
     932    NEEDBITS(2)
     933    t = (unsigned)b & 3;
     934    DUMPBITS(2)
     935  
     936  
     937    /* restore the global bit buffer */
     938    bb = b;
     939    bk = k;
     940  
     941  
     942    /* inflate that block type */
     943    if (t == 2)
     944      return inflate_dynamic();
     945    if (t == 0)
     946      return inflate_stored();
     947    if (t == 1)
     948      return inflate_fixed();
     949  
     950  
     951    /* bad block type */
     952    return 2;
     953  }
     954  
     955  
     956  
     957  int
     958  inflate ()
     959  /* decompress an inflated entry */
     960  {
     961    int e;                /* last block flag */
     962    int r;                /* result code */
     963    unsigned h;           /* maximum struct huft's malloc'ed */
     964  
     965  
     966    /* initialize window, bit buffer */
     967    wp = 0;
     968    bk = 0;
     969    bb = 0;
     970    fresh = true;
     971  
     972  
     973    /* decompress until the last block */
     974    h = 0;
     975    do {
     976      hufts = 0;
     977      if ((r = inflate_block(&e)) != 0)
     978        return r;
     979      if (hufts > h)
     980        h = hufts;
     981    } while (!e);
     982  
     983    /* Undo too much lookahead. The next read will be byte aligned so we
     984     * can discard unused bits in the last meaningful byte.
     985     */
     986    while (bk >= 8) {
     987      bk -= 8;
     988      inptr--;
     989    }
     990  
     991    /* flush out slide */
     992    flush_output(wp);
     993  
     994  
     995    /* return success */
     996    Trace ((stderr, "<%u> ", h));
     997    return 0;
     998  }