Linux Kernel  3.7.1
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
inflate.c
Go to the documentation of this file.
1 #define DEBG(x)
2 #define DEBG1(x)
3 /* inflate.c -- Not copyrighted 1992 by Mark Adler
4  version c10p1, 10 January 1993 */
5 
6 /*
7  * Adapted for booting Linux by Hannu Savolainen 1993
8  * based on gzip-1.0.3
9  *
10  * Nicolas Pitre <[email protected]>, 1999/04/14 :
11  * Little mods for all variable to reside either into rodata or bss segments
12  * by marking constant variables with 'const' and initializing all the others
13  * at run-time only. This allows for the kernel uncompressor to run
14  * directly from Flash or ROM memory on embedded systems.
15  */
16 
17 /*
18  Inflate deflated (PKZIP's method 8 compressed) data. The compression
19  method searches for as much of the current string of bytes (up to a
20  length of 258) in the previous 32 K bytes. If it doesn't find any
21  matches (of at least length 3), it codes the next byte. Otherwise, it
22  codes the length of the matched string and its distance backwards from
23  the current position. There is a single Huffman code that codes both
24  single bytes (called "literals") and match lengths. A second Huffman
25  code codes the distance information, which follows a length code. Each
26  length or distance code actually represents a base value and a number
27  of "extra" (sometimes zero) bits to get to add to the base value. At
28  the end of each deflated block is a special end-of-block (EOB) literal/
29  length code. The decoding process is basically: get a literal/length
30  code; if EOB then done; if a literal, emit the decoded byte; if a
31  length then get the distance and emit the referred-to bytes from the
32  sliding window of previously emitted data.
33 
34  There are (currently) three kinds of inflate blocks: stored, fixed, and
35  dynamic. The compressor deals with some chunk of data at a time, and
36  decides which method to use on a chunk-by-chunk basis. A chunk might
37  typically be 32 K or 64 K. If the chunk is incompressible, then the
38  "stored" method is used. In this case, the bytes are simply stored as
39  is, eight bits per byte, with none of the above coding. The bytes are
40  preceded by a count, since there is no longer an EOB code.
41 
42  If the data is compressible, then either the fixed or dynamic methods
43  are used. In the dynamic method, the compressed data is preceded by
44  an encoding of the literal/length and distance Huffman codes that are
45  to be used to decode this block. The representation is itself Huffman
46  coded, and so is preceded by a description of that code. These code
47  descriptions take up a little space, and so for small blocks, there is
48  a predefined set of codes, called the fixed codes. The fixed method is
49  used if the block codes up smaller that way (usually for quite small
50  chunks), otherwise the dynamic method is used. In the latter case, the
51  codes are customized to the probabilities in the current block, and so
52  can code it much better than the pre-determined fixed codes.
53 
54  The Huffman codes themselves are decoded using a multi-level table
55  lookup, in order to maximize the speed of decoding plus the speed of
56  building the decoding tables. See the comments below that precede the
57  lbits and dbits tuning parameters.
58  */
59 
60 
61 /*
62  Notes beyond the 1.93a appnote.txt:
63 
64  1. Distance pointers never point before the beginning of the output
65  stream.
66  2. Distance pointers can point back across blocks, up to 32k away.
67  3. There is an implied maximum of 7 bits for the bit length table and
68  15 bits for the actual data.
69  4. If only one code exists, then it is encoded using one bit. (Zero
70  would be more efficient, but perhaps a little confusing.) If two
71  codes exist, they are coded using one bit each (0 and 1).
72  5. There is no way of sending zero distance codes--a dummy must be
73  sent if there are none. (History: a pre 2.0 version of PKZIP would
74  store blocks with no distance codes, but this was discovered to be
75  too harsh a criterion.) Valid only for 1.93a. 2.04c does allow
76  zero distance codes, which is sent as one code of zero bits in
77  length.
78  6. There are up to 286 literal/length codes. Code 256 represents the
79  end-of-block. Note however that the static length tree defines
80  288 codes just to fill out the Huffman codes. Codes 286 and 287
81  cannot be used though, since there is no length base or extra bits
82  defined for them. Similarly, there are up to 30 distance codes.
83  However, static trees define 32 codes (all 5 bits) to fill out the
84  Huffman codes, but the last two had better not show up in the data.
85  7. Unzip can check dynamic Huffman blocks for complete code sets.
86  The exception is that a single code would not be complete (see #4).
87  8. The five bits following the block type is really the number of
88  literal codes sent minus 257.
89  9. Length codes 8,16,16 are interpreted as 13 length codes of 8 bits
90  (1+6+6). Therefore, to output three times the length, you output
91  three codes (1+1+1), whereas to output four times the same length,
92  you only need two codes (1+3). Hmm.
93  10. In the tree reconstruction algorithm, Code = Code + Increment
94  only if BitLength(i) is not zero. (Pretty obvious.)
95  11. Correction: 4 Bits: # of Bit Length codes - 4 (4 - 19)
96  12. Note: length code 284 can represent 227-258, but length code 285
97  really is 258. The last length deserves its own, short code
98  since it gets used a lot in very redundant files. The length
99  258 is special since 258 - 3 (the min match length) is 255.
100  13. The literal/length and distance code bit lengths are read as a
101  single stream of lengths. It is possible (and advantageous) for
102  a repeat code (16, 17, or 18) to go across the boundary between
103  the two sets of lengths.
104  */
105 #include <linux/compiler.h>
106 #ifdef NO_INFLATE_MALLOC
107 #include <linux/slab.h>
108 #endif
109 
110 #ifdef RCSID
111 static char rcsid[] = "#Id: inflate.c,v 0.14 1993/06/10 13:27:04 jloup Exp #";
112 #endif
113 
114 #ifndef STATIC
115 
116 #if defined(STDC_HEADERS) || defined(HAVE_STDLIB_H)
117 # include <sys/types.h>
118 # include <stdlib.h>
119 #endif
120 
121 #include "gzip.h"
122 #define STATIC
123 #endif /* !STATIC */
124 
125 #ifndef INIT
126 #define INIT
127 #endif
128 
129 #define slide window
130 
131 /* Huffman code lookup table entry--this entry is four bytes for machines
132  that have 16-bit pointers (e.g. PC's in the small or medium model).
133  Valid extra bits are 0..13. e == 15 is EOB (end of block), e == 16
134  means that v is a literal, 16 < e < 32 means that v is a pointer to
135  the next table, which codes e - 16 bits, and lastly e == 99 indicates
136  an unused code. If a code with e == 99 is looked up, this implies an
137  error in the data. */
138 struct huft {
139  uch e; /* number of extra bits or operation */
140  uch b; /* number of bits in this code or subcode */
141  union {
142  ush n; /* literal, length base, or distance base */
143  struct huft *t; /* pointer to next level of table */
144  } v;
145 };
146 
147 
148 /* Function prototypes */
149 STATIC int INIT huft_build OF((unsigned *, unsigned, unsigned,
150  const ush *, const ush *, struct huft **, int *));
151 STATIC int INIT huft_free OF((struct huft *));
152 STATIC int INIT inflate_codes OF((struct huft *, struct huft *, int, int));
153 STATIC int INIT inflate_stored OF((void));
154 STATIC int INIT inflate_fixed OF((void));
155 STATIC int INIT inflate_dynamic OF((void));
156 STATIC int INIT inflate_block OF((int *));
157 STATIC int INIT inflate OF((void));
158 
159 
160 /* The inflate algorithm uses a sliding 32 K byte window on the uncompressed
161  stream to find repeated byte strings. This is implemented here as a
162  circular buffer. The index is updated simply by incrementing and then
163  ANDing with 0x7fff (32K-1). */
164 /* It is left to other modules to supply the 32 K area. It is assumed
165  to be usable as if it were declared "uch slide[32768];" or as just
166  "uch *slide;" and then malloc'ed in the latter case. The definition
167  must be in unzip.h, included above. */
168 /* unsigned wp; current position in slide */
169 #define wp outcnt
170 #define flush_output(w) (wp=(w),flush_window())
171 
172 /* Tables for deflate from PKZIP's appnote.txt. */
173 static const unsigned border[] = { /* Order of the bit length code lengths */
174  16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15};
175 static const ush cplens[] = { /* Copy lengths for literal codes 257..285 */
176  3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 19, 23, 27, 31,
177  35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258, 0, 0};
178  /* note: see note #13 above about the 258 in this list. */
179 static const ush cplext[] = { /* Extra bits for literal codes 257..285 */
180  0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2,
181  3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 0, 99, 99}; /* 99==invalid */
182 static const ush cpdist[] = { /* Copy offsets for distance codes 0..29 */
183  1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193,
184  257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145,
185  8193, 12289, 16385, 24577};
186 static const ush cpdext[] = { /* Extra bits for distance codes */
187  0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6,
188  7, 7, 8, 8, 9, 9, 10, 10, 11, 11,
189  12, 12, 13, 13};
190 
191 
192 
193 /* Macros for inflate() bit peeking and grabbing.
194  The usage is:
195 
196  NEEDBITS(j)
197  x = b & mask_bits[j];
198  DUMPBITS(j)
199 
200  where NEEDBITS makes sure that b has at least j bits in it, and
201  DUMPBITS removes the bits from b. The macros use the variable k
202  for the number of bits in b. Normally, b and k are register
203  variables for speed, and are initialized at the beginning of a
204  routine that uses these macros from a global bit buffer and count.
205 
206  If we assume that EOB will be the longest code, then we will never
207  ask for bits with NEEDBITS that are beyond the end of the stream.
208  So, NEEDBITS should not read any more bytes than are needed to
209  meet the request. Then no bytes need to be "returned" to the buffer
210  at the end of the last block.
211 
212  However, this assumption is not true for fixed blocks--the EOB code
213  is 7 bits, but the other literal/length codes can be 8 or 9 bits.
214  (The EOB code is shorter than other codes because fixed blocks are
215  generally short. So, while a block always has an EOB, many other
216  literal/length codes have a significantly lower probability of
217  showing up at all.) However, by making the first table have a
218  lookup of seven bits, the EOB code will be found in that first
219  lookup, and so will not require that too many bits be pulled from
220  the stream.
221  */
222 
223 STATIC ulg bb; /* bit buffer */
224 STATIC unsigned bk; /* bits in bit buffer */
225 
226 STATIC const ush mask_bits[] = {
227  0x0000,
228  0x0001, 0x0003, 0x0007, 0x000f, 0x001f, 0x003f, 0x007f, 0x00ff,
229  0x01ff, 0x03ff, 0x07ff, 0x0fff, 0x1fff, 0x3fff, 0x7fff, 0xffff
230 };
231 
232 #define NEXTBYTE() ({ int v = get_byte(); if (v < 0) goto underrun; (uch)v; })
233 #define NEEDBITS(n) {while(k<(n)){b|=((ulg)NEXTBYTE())<<k;k+=8;}}
234 #define DUMPBITS(n) {b>>=(n);k-=(n);}
235 
236 #ifndef NO_INFLATE_MALLOC
237 /* A trivial malloc implementation, adapted from
238  * malloc by Hannu Savolainen 1993 and Matthias Urlichs 1994
239  */
240 
241 static unsigned long malloc_ptr;
242 static int malloc_count;
243 
244 static void *malloc(int size)
245 {
246  void *p;
247 
248  if (size < 0)
249  error("Malloc error");
250  if (!malloc_ptr)
251  malloc_ptr = free_mem_ptr;
252 
253  malloc_ptr = (malloc_ptr + 3) & ~3; /* Align */
254 
255  p = (void *)malloc_ptr;
256  malloc_ptr += size;
257 
258  if (free_mem_end_ptr && malloc_ptr >= free_mem_end_ptr)
259  error("Out of memory");
260 
261  malloc_count++;
262  return p;
263 }
264 
265 static void free(void *where)
266 {
267  malloc_count--;
268  if (!malloc_count)
269  malloc_ptr = free_mem_ptr;
270 }
271 #else
272 #define malloc(a) kmalloc(a, GFP_KERNEL)
273 #define free(a) kfree(a)
274 #endif
275 
276 /*
277  Huffman code decoding is performed using a multi-level table lookup.
278  The fastest way to decode is to simply build a lookup table whose
279  size is determined by the longest code. However, the time it takes
280  to build this table can also be a factor if the data being decoded
281  is not very long. The most common codes are necessarily the
282  shortest codes, so those codes dominate the decoding time, and hence
283  the speed. The idea is you can have a shorter table that decodes the
284  shorter, more probable codes, and then point to subsidiary tables for
285  the longer codes. The time it costs to decode the longer codes is
286  then traded against the time it takes to make longer tables.
287 
288  This results of this trade are in the variables lbits and dbits
289  below. lbits is the number of bits the first level table for literal/
290  length codes can decode in one step, and dbits is the same thing for
291  the distance codes. Subsequent tables are also less than or equal to
292  those sizes. These values may be adjusted either when all of the
293  codes are shorter than that, in which case the longest code length in
294  bits is used, or when the shortest code is *longer* than the requested
295  table size, in which case the length of the shortest code in bits is
296  used.
297 
298  There are two different values for the two tables, since they code a
299  different number of possibilities each. The literal/length table
300  codes 286 possible values, or in a flat code, a little over eight
301  bits. The distance table codes 30 possible values, or a little less
302  than five bits, flat. The optimum values for speed end up being
303  about one bit more than those, so lbits is 8+1 and dbits is 5+1.
304  The optimum values may differ though from machine to machine, and
305  possibly even between compilers. Your mileage may vary.
306  */
307 
308 
309 STATIC const int lbits = 9; /* bits in base literal/length lookup table */
310 STATIC const int dbits = 6; /* bits in base distance lookup table */
311 
312 
313 /* If BMAX needs to be larger than 16, then h and x[] should be ulg. */
314 #define BMAX 16 /* maximum bit length of any code (16 for explode) */
315 #define N_MAX 288 /* maximum number of codes in any set */
316 
317 
318 STATIC unsigned hufts; /* track memory usage */
319 
320 
322  unsigned *b, /* code lengths in bits (all assumed <= BMAX) */
323  unsigned n, /* number of codes (assumed <= N_MAX) */
324  unsigned s, /* number of simple-valued codes (0..s-1) */
325  const ush *d, /* list of base values for non-simple codes */
326  const ush *e, /* list of extra bits for non-simple codes */
327  struct huft **t, /* result: starting table */
328  int *m /* maximum lookup bits, returns actual */
329  )
330 /* Given a list of code lengths and a maximum table size, make a set of
331  tables to decode that set of codes. Return zero on success, one if
332  the given code set is incomplete (the tables are still built in this
333  case), two if the input is invalid (all zero length codes or an
334  oversubscribed set of lengths), and three if not enough memory. */
335 {
336  unsigned a; /* counter for codes of length k */
337  unsigned f; /* i repeats in table every f entries */
338  int g; /* maximum code length */
339  int h; /* table level */
340  register unsigned i; /* counter, current code */
341  register unsigned j; /* counter */
342  register int k; /* number of bits in current code */
343  int l; /* bits per table (returned in m) */
344  register unsigned *p; /* pointer into c[], b[], or v[] */
345  register struct huft *q; /* points to current table */
346  struct huft r; /* table entry for structure assignment */
347  register int w; /* bits before this table == (l * h) */
348  unsigned *xp; /* pointer into x */
349  int y; /* number of dummy codes added */
350  unsigned z; /* number of entries in current table */
351  struct {
352  unsigned c[BMAX+1]; /* bit length count table */
353  struct huft *u[BMAX]; /* table stack */
354  unsigned v[N_MAX]; /* values in order of bit length */
355  unsigned x[BMAX+1]; /* bit offsets, then code stack */
356  } *stk;
357  unsigned *c, *v, *x;
358  struct huft **u;
359  int ret;
360 
361 DEBG("huft1 ");
362 
363  stk = malloc(sizeof(*stk));
364  if (stk == NULL)
365  return 3; /* out of memory */
366 
367  c = stk->c;
368  v = stk->v;
369  x = stk->x;
370  u = stk->u;
371 
372  /* Generate counts for each bit length */
373  memzero(stk->c, sizeof(stk->c));
374  p = b; i = n;
375  do {
376  Tracecv(*p, (stderr, (n-i >= ' ' && n-i <= '~' ? "%c %d\n" : "0x%x %d\n"),
377  n-i, *p));
378  c[*p]++; /* assume all entries <= BMAX */
379  p++; /* Can't combine with above line (Solaris bug) */
380  } while (--i);
381  if (c[0] == n) /* null input--all zero length codes */
382  {
383  *t = (struct huft *)NULL;
384  *m = 0;
385  ret = 2;
386  goto out;
387  }
388 
389 DEBG("huft2 ");
390 
391  /* Find minimum and maximum length, bound *m by those */
392  l = *m;
393  for (j = 1; j <= BMAX; j++)
394  if (c[j])
395  break;
396  k = j; /* minimum code length */
397  if ((unsigned)l < j)
398  l = j;
399  for (i = BMAX; i; i--)
400  if (c[i])
401  break;
402  g = i; /* maximum code length */
403  if ((unsigned)l > i)
404  l = i;
405  *m = l;
406 
407 DEBG("huft3 ");
408 
409  /* Adjust last length count to fill out codes, if needed */
410  for (y = 1 << j; j < i; j++, y <<= 1)
411  if ((y -= c[j]) < 0) {
412  ret = 2; /* bad input: more codes than bits */
413  goto out;
414  }
415  if ((y -= c[i]) < 0) {
416  ret = 2;
417  goto out;
418  }
419  c[i] += y;
420 
421 DEBG("huft4 ");
422 
423  /* Generate starting offsets into the value table for each length */
424  x[1] = j = 0;
425  p = c + 1; xp = x + 2;
426  while (--i) { /* note that i == g from above */
427  *xp++ = (j += *p++);
428  }
429 
430 DEBG("huft5 ");
431 
432  /* Make a table of values in order of bit lengths */
433  p = b; i = 0;
434  do {
435  if ((j = *p++) != 0)
436  v[x[j]++] = i;
437  } while (++i < n);
438  n = x[g]; /* set n to length of v */
439 
440 DEBG("h6 ");
441 
442  /* Generate the Huffman codes and for each, make the table entries */
443  x[0] = i = 0; /* first Huffman code is zero */
444  p = v; /* grab values in bit order */
445  h = -1; /* no tables yet--level -1 */
446  w = -l; /* bits decoded == (l * h) */
447  u[0] = (struct huft *)NULL; /* just to keep compilers happy */
448  q = (struct huft *)NULL; /* ditto */
449  z = 0; /* ditto */
450 DEBG("h6a ");
451 
452  /* go through the bit lengths (k already is bits in shortest code) */
453  for (; k <= g; k++)
454  {
455 DEBG("h6b ");
456  a = c[k];
457  while (a--)
458  {
459 DEBG("h6b1 ");
460  /* here i is the Huffman code of length k bits for value *p */
461  /* make tables up to required level */
462  while (k > w + l)
463  {
464 DEBG1("1 ");
465  h++;
466  w += l; /* previous table always l bits */
467 
468  /* compute minimum size table less than or equal to l bits */
469  z = (z = g - w) > (unsigned)l ? l : z; /* upper limit on table size */
470  if ((f = 1 << (j = k - w)) > a + 1) /* try a k-w bit table */
471  { /* too few codes for k-w bit table */
472 DEBG1("2 ");
473  f -= a + 1; /* deduct codes from patterns left */
474  xp = c + k;
475  if (j < z)
476  while (++j < z) /* try smaller tables up to z bits */
477  {
478  if ((f <<= 1) <= *++xp)
479  break; /* enough codes to use up j bits */
480  f -= *xp; /* else deduct codes from patterns */
481  }
482  }
483 DEBG1("3 ");
484  z = 1 << j; /* table entries for j-bit table */
485 
486  /* allocate and link in new table */
487  if ((q = (struct huft *)malloc((z + 1)*sizeof(struct huft))) ==
488  (struct huft *)NULL)
489  {
490  if (h)
491  huft_free(u[0]);
492  ret = 3; /* not enough memory */
493  goto out;
494  }
495 DEBG1("4 ");
496  hufts += z + 1; /* track memory usage */
497  *t = q + 1; /* link to list for huft_free() */
498  *(t = &(q->v.t)) = (struct huft *)NULL;
499  u[h] = ++q; /* table starts after link */
500 
501 DEBG1("5 ");
502  /* connect to last table, if there is one */
503  if (h)
504  {
505  x[h] = i; /* save pattern for backing up */
506  r.b = (uch)l; /* bits to dump before this table */
507  r.e = (uch)(16 + j); /* bits in this table */
508  r.v.t = q; /* pointer to this table */
509  j = i >> (w - l); /* (get around Turbo C bug) */
510  u[h-1][j] = r; /* connect to last table */
511  }
512 DEBG1("6 ");
513  }
514 DEBG("h6c ");
515 
516  /* set up table entry in r */
517  r.b = (uch)(k - w);
518  if (p >= v + n)
519  r.e = 99; /* out of values--invalid code */
520  else if (*p < s)
521  {
522  r.e = (uch)(*p < 256 ? 16 : 15); /* 256 is end-of-block code */
523  r.v.n = (ush)(*p); /* simple code is just the value */
524  p++; /* one compiler does not like *p++ */
525  }
526  else
527  {
528  r.e = (uch)e[*p - s]; /* non-simple--look up in lists */
529  r.v.n = d[*p++ - s];
530  }
531 DEBG("h6d ");
532 
533  /* fill code-like entries with r */
534  f = 1 << (k - w);
535  for (j = i >> w; j < z; j += f)
536  q[j] = r;
537 
538  /* backwards increment the k-bit code i */
539  for (j = 1 << (k - 1); i & j; j >>= 1)
540  i ^= j;
541  i ^= j;
542 
543  /* backup over finished tables */
544  while ((i & ((1 << w) - 1)) != x[h])
545  {
546  h--; /* don't need to update q */
547  w -= l;
548  }
549 DEBG("h6e ");
550  }
551 DEBG("h6f ");
552  }
553 
554 DEBG("huft7 ");
555 
556  /* Return true (1) if we were given an incomplete table */
557  ret = y != 0 && g != 1;
558 
559  out:
560  free(stk);
561  return ret;
562 }
563 
564 
565 
567  struct huft *t /* table to free */
568  )
569 /* Free the malloc'ed tables built by huft_build(), which makes a linked
570  list of the tables it made, with the links in a dummy first entry of
571  each table. */
572 {
573  register struct huft *p, *q;
574 
575 
576  /* Go through linked list, freeing from the malloced (t[-1]) address. */
577  p = t;
578  while (p != (struct huft *)NULL)
579  {
580  q = (--p)->v.t;
581  free((char*)p);
582  p = q;
583  }
584  return 0;
585 }
586 
587 
589  struct huft *tl, /* literal/length decoder tables */
590  struct huft *td, /* distance decoder tables */
591  int bl, /* number of bits decoded by tl[] */
592  int bd /* number of bits decoded by td[] */
593  )
594 /* inflate (decompress) the codes in a deflated (compressed) block.
595  Return an error code or zero if it all goes ok. */
596 {
597  register unsigned e; /* table entry flag/number of extra bits */
598  unsigned n, d; /* length and index for copy */
599  unsigned w; /* current window position */
600  struct huft *t; /* pointer to table entry */
601  unsigned ml, md; /* masks for bl and bd bits */
602  register ulg b; /* bit buffer */
603  register unsigned k; /* number of bits in bit buffer */
604 
605 
606  /* make local copies of globals */
607  b = bb; /* initialize bit buffer */
608  k = bk;
609  w = wp; /* initialize window position */
610 
611  /* inflate the coded data */
612  ml = mask_bits[bl]; /* precompute masks for speed */
613  md = mask_bits[bd];
614  for (;;) /* do until end of block */
615  {
616  NEEDBITS((unsigned)bl)
617  if ((e = (t = tl + ((unsigned)b & ml))->e) > 16)
618  do {
619  if (e == 99)
620  return 1;
621  DUMPBITS(t->b)
622  e -= 16;
623  NEEDBITS(e)
624  } while ((e = (t = t->v.t + ((unsigned)b & mask_bits[e]))->e) > 16);
625  DUMPBITS(t->b)
626  if (e == 16) /* then it's a literal */
627  {
628  slide[w++] = (uch)t->v.n;
629  Tracevv((stderr, "%c", slide[w-1]));
630  if (w == WSIZE)
631  {
632  flush_output(w);
633  w = 0;
634  }
635  }
636  else /* it's an EOB or a length */
637  {
638  /* exit if end of block */
639  if (e == 15)
640  break;
641 
642  /* get length of block to copy */
643  NEEDBITS(e)
644  n = t->v.n + ((unsigned)b & mask_bits[e]);
645  DUMPBITS(e);
646 
647  /* decode distance of block to copy */
648  NEEDBITS((unsigned)bd)
649  if ((e = (t = td + ((unsigned)b & md))->e) > 16)
650  do {
651  if (e == 99)
652  return 1;
653  DUMPBITS(t->b)
654  e -= 16;
655  NEEDBITS(e)
656  } while ((e = (t = t->v.t + ((unsigned)b & mask_bits[e]))->e) > 16);
657  DUMPBITS(t->b)
658  NEEDBITS(e)
659  d = w - t->v.n - ((unsigned)b & mask_bits[e]);
660  DUMPBITS(e)
661  Tracevv((stderr,"\\[%d,%d]", w-d, n));
662 
663  /* do the copy */
664  do {
665  n -= (e = (e = WSIZE - ((d &= WSIZE-1) > w ? d : w)) > n ? n : e);
666 #if !defined(NOMEMCPY) && !defined(DEBUG)
667  if (w - d >= e) /* (this test assumes unsigned comparison) */
668  {
669  memcpy(slide + w, slide + d, e);
670  w += e;
671  d += e;
672  }
673  else /* do it slow to avoid memcpy() overlap */
674 #endif /* !NOMEMCPY */
675  do {
676  slide[w++] = slide[d++];
677  Tracevv((stderr, "%c", slide[w-1]));
678  } while (--e);
679  if (w == WSIZE)
680  {
681  flush_output(w);
682  w = 0;
683  }
684  } while (n);
685  }
686  }
687 
688 
689  /* restore the globals from the locals */
690  wp = w; /* restore global window pointer */
691  bb = b; /* restore global bit buffer */
692  bk = k;
693 
694  /* done */
695  return 0;
696 
697  underrun:
698  return 4; /* Input underrun */
699 }
700 
701 
702 
704 /* "decompress" an inflated type 0 (stored) block. */
705 {
706  unsigned n; /* number of bytes in block */
707  unsigned w; /* current window position */
708  register ulg b; /* bit buffer */
709  register unsigned k; /* number of bits in bit buffer */
710 
711 DEBG("<stor");
712 
713  /* make local copies of globals */
714  b = bb; /* initialize bit buffer */
715  k = bk;
716  w = wp; /* initialize window position */
717 
718 
719  /* go to byte boundary */
720  n = k & 7;
721  DUMPBITS(n);
722 
723 
724  /* get the length and its complement */
725  NEEDBITS(16)
726  n = ((unsigned)b & 0xffff);
727  DUMPBITS(16)
728  NEEDBITS(16)
729  if (n != (unsigned)((~b) & 0xffff))
730  return 1; /* error in compressed data */
731  DUMPBITS(16)
732 
733 
734  /* read and output the compressed data */
735  while (n--)
736  {
737  NEEDBITS(8)
738  slide[w++] = (uch)b;
739  if (w == WSIZE)
740  {
741  flush_output(w);
742  w = 0;
743  }
744  DUMPBITS(8)
745  }
746 
747 
748  /* restore the globals from the locals */
749  wp = w; /* restore global window pointer */
750  bb = b; /* restore global bit buffer */
751  bk = k;
752 
753  DEBG(">");
754  return 0;
755 
756  underrun:
757  return 4; /* Input underrun */
758 }
759 
760 
761 /*
762  * We use `noinline' here to prevent gcc-3.5 from using too much stack space
763  */
765 /* decompress an inflated type 1 (fixed Huffman codes) block. We should
766  either replace this with a custom decoder, or at least precompute the
767  Huffman tables. */
768 {
769  int i; /* temporary variable */
770  struct huft *tl; /* literal/length code table */
771  struct huft *td; /* distance code table */
772  int bl; /* lookup bits for tl */
773  int bd; /* lookup bits for td */
774  unsigned *l; /* length list for huft_build */
775 
776 DEBG("<fix");
777 
778  l = malloc(sizeof(*l) * 288);
779  if (l == NULL)
780  return 3; /* out of memory */
781 
782  /* set up literal table */
783  for (i = 0; i < 144; i++)
784  l[i] = 8;
785  for (; i < 256; i++)
786  l[i] = 9;
787  for (; i < 280; i++)
788  l[i] = 7;
789  for (; i < 288; i++) /* make a complete, but wrong code set */
790  l[i] = 8;
791  bl = 7;
792  if ((i = huft_build(l, 288, 257, cplens, cplext, &tl, &bl)) != 0) {
793  free(l);
794  return i;
795  }
796 
797  /* set up distance table */
798  for (i = 0; i < 30; i++) /* make an incomplete code set */
799  l[i] = 5;
800  bd = 5;
801  if ((i = huft_build(l, 30, 0, cpdist, cpdext, &td, &bd)) > 1)
802  {
803  huft_free(tl);
804  free(l);
805 
806  DEBG(">");
807  return i;
808  }
809 
810 
811  /* decompress until an end-of-block code */
812  if (inflate_codes(tl, td, bl, bd)) {
813  free(l);
814  return 1;
815  }
816 
817  /* free the decoding tables, return */
818  free(l);
819  huft_free(tl);
820  huft_free(td);
821  return 0;
822 }
823 
824 
825 /*
826  * We use `noinline' here to prevent gcc-3.5 from using too much stack space
827  */
829 /* decompress an inflated type 2 (dynamic Huffman codes) block. */
830 {
831  int i; /* temporary variables */
832  unsigned j;
833  unsigned l; /* last length */
834  unsigned m; /* mask for bit lengths table */
835  unsigned n; /* number of lengths to get */
836  struct huft *tl; /* literal/length code table */
837  struct huft *td; /* distance code table */
838  int bl; /* lookup bits for tl */
839  int bd; /* lookup bits for td */
840  unsigned nb; /* number of bit length codes */
841  unsigned nl; /* number of literal/length codes */
842  unsigned nd; /* number of distance codes */
843  unsigned *ll; /* literal/length and distance code lengths */
844  register ulg b; /* bit buffer */
845  register unsigned k; /* number of bits in bit buffer */
846  int ret;
847 
848 DEBG("<dyn");
849 
850 #ifdef PKZIP_BUG_WORKAROUND
851  ll = malloc(sizeof(*ll) * (288+32)); /* literal/length and distance code lengths */
852 #else
853  ll = malloc(sizeof(*ll) * (286+30)); /* literal/length and distance code lengths */
854 #endif
855 
856  if (ll == NULL)
857  return 1;
858 
859  /* make local bit buffer */
860  b = bb;
861  k = bk;
862 
863 
864  /* read in table lengths */
865  NEEDBITS(5)
866  nl = 257 + ((unsigned)b & 0x1f); /* number of literal/length codes */
867  DUMPBITS(5)
868  NEEDBITS(5)
869  nd = 1 + ((unsigned)b & 0x1f); /* number of distance codes */
870  DUMPBITS(5)
871  NEEDBITS(4)
872  nb = 4 + ((unsigned)b & 0xf); /* number of bit length codes */
873  DUMPBITS(4)
874 #ifdef PKZIP_BUG_WORKAROUND
875  if (nl > 288 || nd > 32)
876 #else
877  if (nl > 286 || nd > 30)
878 #endif
879  {
880  ret = 1; /* bad lengths */
881  goto out;
882  }
883 
884 DEBG("dyn1 ");
885 
886  /* read in bit-length-code lengths */
887  for (j = 0; j < nb; j++)
888  {
889  NEEDBITS(3)
890  ll[border[j]] = (unsigned)b & 7;
891  DUMPBITS(3)
892  }
893  for (; j < 19; j++)
894  ll[border[j]] = 0;
895 
896 DEBG("dyn2 ");
897 
898  /* build decoding table for trees--single level, 7 bit lookup */
899  bl = 7;
900  if ((i = huft_build(ll, 19, 19, NULL, NULL, &tl, &bl)) != 0)
901  {
902  if (i == 1)
903  huft_free(tl);
904  ret = i; /* incomplete code set */
905  goto out;
906  }
907 
908 DEBG("dyn3 ");
909 
910  /* read in literal and distance code lengths */
911  n = nl + nd;
912  m = mask_bits[bl];
913  i = l = 0;
914  while ((unsigned)i < n)
915  {
916  NEEDBITS((unsigned)bl)
917  j = (td = tl + ((unsigned)b & m))->b;
918  DUMPBITS(j)
919  j = td->v.n;
920  if (j < 16) /* length of code in bits (0..15) */
921  ll[i++] = l = j; /* save last length in l */
922  else if (j == 16) /* repeat last length 3 to 6 times */
923  {
924  NEEDBITS(2)
925  j = 3 + ((unsigned)b & 3);
926  DUMPBITS(2)
927  if ((unsigned)i + j > n) {
928  ret = 1;
929  goto out;
930  }
931  while (j--)
932  ll[i++] = l;
933  }
934  else if (j == 17) /* 3 to 10 zero length codes */
935  {
936  NEEDBITS(3)
937  j = 3 + ((unsigned)b & 7);
938  DUMPBITS(3)
939  if ((unsigned)i + j > n) {
940  ret = 1;
941  goto out;
942  }
943  while (j--)
944  ll[i++] = 0;
945  l = 0;
946  }
947  else /* j == 18: 11 to 138 zero length codes */
948  {
949  NEEDBITS(7)
950  j = 11 + ((unsigned)b & 0x7f);
951  DUMPBITS(7)
952  if ((unsigned)i + j > n) {
953  ret = 1;
954  goto out;
955  }
956  while (j--)
957  ll[i++] = 0;
958  l = 0;
959  }
960  }
961 
962 DEBG("dyn4 ");
963 
964  /* free decoding table for trees */
965  huft_free(tl);
966 
967 DEBG("dyn5 ");
968 
969  /* restore the global bit buffer */
970  bb = b;
971  bk = k;
972 
973 DEBG("dyn5a ");
974 
975  /* build the decoding tables for literal/length and distance codes */
976  bl = lbits;
977  if ((i = huft_build(ll, nl, 257, cplens, cplext, &tl, &bl)) != 0)
978  {
979 DEBG("dyn5b ");
980  if (i == 1) {
981  error("incomplete literal tree");
982  huft_free(tl);
983  }
984  ret = i; /* incomplete code set */
985  goto out;
986  }
987 DEBG("dyn5c ");
988  bd = dbits;
989  if ((i = huft_build(ll + nl, nd, 0, cpdist, cpdext, &td, &bd)) != 0)
990  {
991 DEBG("dyn5d ");
992  if (i == 1) {
993  error("incomplete distance tree");
994 #ifdef PKZIP_BUG_WORKAROUND
995  i = 0;
996  }
997 #else
998  huft_free(td);
999  }
1000  huft_free(tl);
1001  ret = i; /* incomplete code set */
1002  goto out;
1003 #endif
1004  }
1005 
1006 DEBG("dyn6 ");
1007 
1008  /* decompress until an end-of-block code */
1009  if (inflate_codes(tl, td, bl, bd)) {
1010  ret = 1;
1011  goto out;
1012  }
1013 
1014 DEBG("dyn7 ");
1015 
1016  /* free the decoding tables, return */
1017  huft_free(tl);
1018  huft_free(td);
1019 
1020  DEBG(">");
1021  ret = 0;
1022 out:
1023  free(ll);
1024  return ret;
1025 
1026 underrun:
1027  ret = 4; /* Input underrun */
1028  goto out;
1029 }
1030 
1031 
1032 
1034  int *e /* last block flag */
1035  )
1036 /* decompress an inflated block */
1037 {
1038  unsigned t; /* block type */
1039  register ulg b; /* bit buffer */
1040  register unsigned k; /* number of bits in bit buffer */
1041 
1042  DEBG("<blk");
1043 
1044  /* make local bit buffer */
1045  b = bb;
1046  k = bk;
1047 
1048 
1049  /* read in last block bit */
1050  NEEDBITS(1)
1051  *e = (int)b & 1;
1052  DUMPBITS(1)
1053 
1054 
1055  /* read in block type */
1056  NEEDBITS(2)
1057  t = (unsigned)b & 3;
1058  DUMPBITS(2)
1059 
1060 
1061  /* restore the global bit buffer */
1062  bb = b;
1063  bk = k;
1064 
1065  /* inflate that block type */
1066  if (t == 2)
1067  return inflate_dynamic();
1068  if (t == 0)
1069  return inflate_stored();
1070  if (t == 1)
1071  return inflate_fixed();
1072 
1073  DEBG(">");
1074 
1075  /* bad block type */
1076  return 2;
1077 
1078  underrun:
1079  return 4; /* Input underrun */
1080 }
1081 
1082 
1083 
1085 /* decompress an inflated entry */
1086 {
1087  int e; /* last block flag */
1088  int r; /* result code */
1089  unsigned h; /* maximum struct huft's malloc'ed */
1090 
1091  /* initialize window, bit buffer */
1092  wp = 0;
1093  bk = 0;
1094  bb = 0;
1095 
1096 
1097  /* decompress until the last block */
1098  h = 0;
1099  do {
1100  hufts = 0;
1101 #ifdef ARCH_HAS_DECOMP_WDOG
1102  arch_decomp_wdog();
1103 #endif
1104  r = inflate_block(&e);
1105  if (r)
1106  return r;
1107  if (hufts > h)
1108  h = hufts;
1109  } while (!e);
1110 
1111  /* Undo too much lookahead. The next read will be byte aligned so we
1112  * can discard unused bits in the last meaningful byte.
1113  */
1114  while (bk >= 8) {
1115  bk -= 8;
1116  inptr--;
1117  }
1118 
1119  /* flush out slide */
1120  flush_output(wp);
1121 
1122 
1123  /* return success */
1124 #ifdef DEBUG
1125  fprintf(stderr, "<%u> ", h);
1126 #endif /* DEBUG */
1127  return 0;
1128 }
1129 
1130 /**********************************************************************
1131  *
1132  * The following are support routines for inflate.c
1133  *
1134  **********************************************************************/
1135 
1136 static ulg crc_32_tab[256];
1137 static ulg crc; /* initialized in makecrc() so it'll reside in bss */
1138 #define CRC_VALUE (crc ^ 0xffffffffUL)
1139 
1140 /*
1141  * Code to compute the CRC-32 table. Borrowed from
1142  * gzip-1.0.3/makecrc.c.
1143  */
1144 
1145 static void INIT
1146 makecrc(void)
1147 {
1148 /* Not copyrighted 1990 Mark Adler */
1149 
1150  unsigned long c; /* crc shift register */
1151  unsigned long e; /* polynomial exclusive-or pattern */
1152  int i; /* counter for all possible eight bit values */
1153  int k; /* byte being shifted into crc apparatus */
1154 
1155  /* terms of polynomial defining this crc (except x^32): */
1156  static const int p[] = {0,1,2,4,5,7,8,10,11,12,16,22,23,26};
1157 
1158  /* Make exclusive-or pattern from polynomial */
1159  e = 0;
1160  for (i = 0; i < sizeof(p)/sizeof(int); i++)
1161  e |= 1L << (31 - p[i]);
1162 
1163  crc_32_tab[0] = 0;
1164 
1165  for (i = 1; i < 256; i++)
1166  {
1167  c = 0;
1168  for (k = i | 256; k != 1; k >>= 1)
1169  {
1170  c = c & 1 ? (c >> 1) ^ e : c >> 1;
1171  if (k & 1)
1172  c ^= e;
1173  }
1174  crc_32_tab[i] = c;
1175  }
1176 
1177  /* this is initialized here so this code could reside in ROM */
1178  crc = (ulg)0xffffffffUL; /* shift register contents */
1179 }
1180 
1181 /* gzip flag byte */
1182 #define ASCII_FLAG 0x01 /* bit 0 set: file probably ASCII text */
1183 #define CONTINUATION 0x02 /* bit 1 set: continuation of multi-part gzip file */
1184 #define EXTRA_FIELD 0x04 /* bit 2 set: extra field present */
1185 #define ORIG_NAME 0x08 /* bit 3 set: original file name present */
1186 #define COMMENT 0x10 /* bit 4 set: file comment present */
1187 #define ENCRYPTED 0x20 /* bit 5 set: file is encrypted */
1188 #define RESERVED 0xC0 /* bit 6,7: reserved */
1189 
1190 /*
1191  * Do the uncompression!
1192  */
1193 static int INIT gunzip(void)
1194 {
1195  uch flags;
1196  unsigned char magic[2]; /* magic header */
1197  char method;
1198  ulg orig_crc = 0; /* original crc */
1199  ulg orig_len = 0; /* original uncompressed length */
1200  int res;
1201 
1202  magic[0] = NEXTBYTE();
1203  magic[1] = NEXTBYTE();
1204  method = NEXTBYTE();
1205 
1206  if (magic[0] != 037 ||
1207  ((magic[1] != 0213) && (magic[1] != 0236))) {
1208  error("bad gzip magic numbers");
1209  return -1;
1210  }
1211 
1212  /* We only support method #8, DEFLATED */
1213  if (method != 8) {
1214  error("internal error, invalid method");
1215  return -1;
1216  }
1217 
1218  flags = (uch)get_byte();
1219  if ((flags & ENCRYPTED) != 0) {
1220  error("Input is encrypted");
1221  return -1;
1222  }
1223  if ((flags & CONTINUATION) != 0) {
1224  error("Multi part input");
1225  return -1;
1226  }
1227  if ((flags & RESERVED) != 0) {
1228  error("Input has invalid flags");
1229  return -1;
1230  }
1231  NEXTBYTE(); /* Get timestamp */
1232  NEXTBYTE();
1233  NEXTBYTE();
1234  NEXTBYTE();
1235 
1236  (void)NEXTBYTE(); /* Ignore extra flags for the moment */
1237  (void)NEXTBYTE(); /* Ignore OS type for the moment */
1238 
1239  if ((flags & EXTRA_FIELD) != 0) {
1240  unsigned len = (unsigned)NEXTBYTE();
1241  len |= ((unsigned)NEXTBYTE())<<8;
1242  while (len--) (void)NEXTBYTE();
1243  }
1244 
1245  /* Get original file name if it was truncated */
1246  if ((flags & ORIG_NAME) != 0) {
1247  /* Discard the old name */
1248  while (NEXTBYTE() != 0) /* null */ ;
1249  }
1250 
1251  /* Discard file comment if any */
1252  if ((flags & COMMENT) != 0) {
1253  while (NEXTBYTE() != 0) /* null */ ;
1254  }
1255 
1256  /* Decompress */
1257  if ((res = inflate())) {
1258  switch (res) {
1259  case 0:
1260  break;
1261  case 1:
1262  error("invalid compressed format (err=1)");
1263  break;
1264  case 2:
1265  error("invalid compressed format (err=2)");
1266  break;
1267  case 3:
1268  error("out of memory");
1269  break;
1270  case 4:
1271  error("out of input data");
1272  break;
1273  default:
1274  error("invalid compressed format (other)");
1275  }
1276  return -1;
1277  }
1278 
1279  /* Get the crc and original length */
1280  /* crc32 (see algorithm.doc)
1281  * uncompressed input size modulo 2^32
1282  */
1283  orig_crc = (ulg) NEXTBYTE();
1284  orig_crc |= (ulg) NEXTBYTE() << 8;
1285  orig_crc |= (ulg) NEXTBYTE() << 16;
1286  orig_crc |= (ulg) NEXTBYTE() << 24;
1287 
1288  orig_len = (ulg) NEXTBYTE();
1289  orig_len |= (ulg) NEXTBYTE() << 8;
1290  orig_len |= (ulg) NEXTBYTE() << 16;
1291  orig_len |= (ulg) NEXTBYTE() << 24;
1292 
1293  /* Validate decompression */
1294  if (orig_crc != CRC_VALUE) {
1295  error("crc error");
1296  return -1;
1297  }
1298  if (orig_len != bytes_out) {
1299  error("length error");
1300  return -1;
1301  }
1302  return 0;
1303 
1304  underrun: /* NEXTBYTE() goto's here if needed */
1305  error("out of input data");
1306  return -1;
1307 }
1308 
1309