|
Lines 207-220
Link Here
|
| 207 |
next = fixed; |
207 |
next = fixed; |
| 208 |
lenfix = next; |
208 |
lenfix = next; |
| 209 |
bits = 9; |
209 |
bits = 9; |
| 210 |
inflate_table(LENS, state->lens, 288, &(next), &(bits), state->work); |
210 |
inflate_table_safe(LENS, state->lens, 288, &(next), 512, &(bits), state->work); |
| 211 |
|
211 |
|
| 212 |
/* distance table */ |
212 |
/* distance table */ |
| 213 |
sym = 0; |
213 |
sym = 0; |
| 214 |
while (sym < 32) state->lens[sym++] = 5; |
214 |
while (sym < 32) state->lens[sym++] = 5; |
| 215 |
distfix = next; |
215 |
distfix = next; |
| 216 |
bits = 5; |
216 |
bits = 5; |
| 217 |
inflate_table(DISTS, state->lens, 32, &(next), &(bits), state->work); |
217 |
inflate_table_safe(DISTS, state->lens, 32, &(next), 32, &(bits), state->work); |
| 218 |
|
218 |
|
| 219 |
/* do this just once */ |
219 |
/* do this just once */ |
| 220 |
virgin = 0; |
220 |
virgin = 0; |
|
Lines 846-852
Link Here
|
| 846 |
state->next = state->codes; |
846 |
state->next = state->codes; |
| 847 |
state->lencode = (code const FAR *)(state->next); |
847 |
state->lencode = (code const FAR *)(state->next); |
| 848 |
state->lenbits = 7; |
848 |
state->lenbits = 7; |
| 849 |
ret = inflate_table(CODES, state->lens, 19, &(state->next), |
849 |
ret = inflate_table_safe(CODES, state->lens, 19, |
|
|
850 |
&(state->next), ENOUGH, |
| 850 |
&(state->lenbits), state->work); |
851 |
&(state->lenbits), state->work); |
| 851 |
if (ret) { |
852 |
if (ret) { |
| 852 |
strm->msg = (char *)"invalid code lengths set"; |
853 |
strm->msg = (char *)"invalid code lengths set"; |
|
Lines 912-918
Link Here
|
| 912 |
state->next = state->codes; |
913 |
state->next = state->codes; |
| 913 |
state->lencode = (code const FAR *)(state->next); |
914 |
state->lencode = (code const FAR *)(state->next); |
| 914 |
state->lenbits = 9; |
915 |
state->lenbits = 9; |
| 915 |
ret = inflate_table(LENS, state->lens, state->nlen, &(state->next), |
916 |
ret = inflate_table_safe(LENS, state->lens, state->nlen, |
|
|
917 |
&(state->next), ENOUGH, |
| 916 |
&(state->lenbits), state->work); |
918 |
&(state->lenbits), state->work); |
| 917 |
if (ret) { |
919 |
if (ret) { |
| 918 |
strm->msg = (char *)"invalid literal/lengths set"; |
920 |
strm->msg = (char *)"invalid literal/lengths set"; |
|
Lines 921-928
Link Here
|
| 921 |
} |
923 |
} |
| 922 |
state->distcode = (code const FAR *)(state->next); |
924 |
state->distcode = (code const FAR *)(state->next); |
| 923 |
state->distbits = 6; |
925 |
state->distbits = 6; |
| 924 |
ret = inflate_table(DISTS, state->lens + state->nlen, state->ndist, |
926 |
ret = inflate_table_safe(DISTS, state->lens + state->nlen, state->ndist, |
| 925 |
&(state->next), &(state->distbits), state->work); |
927 |
&(state->next), ENOUGH - (unsigned) (state->next - state->codes), |
|
|
928 |
&(state->distbits), state->work); |
| 926 |
if (ret) { |
929 |
if (ret) { |
| 927 |
strm->msg = (char *)"invalid distances set"; |
930 |
strm->msg = (char *)"invalid distances set"; |
| 928 |
state->mode = BAD; |
931 |
state->mode = BAD; |