1 $NetBSD: patch-ab,v 1.6 2006/12/03 03:09:46 obache Exp $
3 --- src/maketbl.c.orig 2000-10-04 23:57:38.000000000 +0900
5 @@ -32,8 +32,15 @@ make_table(nchar, bitlen, tablebits, tab
9 - for (i = 0; i < nchar; i++)
11 + for (i = 0; i < nchar; i++) {
12 + if (bitlen[i] > 16) {
14 + error("Bad table (case a)");
21 /* calculate first code */
23 @@ -41,8 +48,10 @@ make_table(nchar, bitlen, tablebits, tab
25 total += weight[i] * count[i];
27 - if ((total & 0xffff) != 0)
28 + if ((total & 0xffff) != 0 || tablebits > 16) { /* 16 for weight below */
29 error("make_table()", "Bad table (5)\n");
33 /* shift data for make table. */
35 @@ -53,7 +62,7 @@ make_table(nchar, bitlen, tablebits, tab
38 j = start[tablebits + 1] >> m;
40 + k = MIN(1 << tablebits, 4096);
42 for (i = j; i < k; i++)
44 @@ -66,12 +75,19 @@ make_table(nchar, bitlen, tablebits, tab
45 l = start[k] + weight[k];
49 for (i = start[k]; i < l; i++)
53 /* code not in table */
54 - p = &table[(i = start[k]) >> m];
56 + if ((i >> m) > 4096) {
58 + error("Bad table (case c)");
64 /* make tree (n length) */