diff options
author | Mark Adler <madler@alumni.caltech.edu> | 2017-04-16 08:35:33 -0700 |
---|---|---|
committer | Hans Kristian Rosbach <hk-github@circlestorm.org> | 2018-12-13 14:21:20 +0100 |
commit | 3cbd82cffce0d0f9021fc2f3a715a27f3edddd5b (patch) | |
tree | f5fb2ec92390194cbed67437855bfab55f82b346 /inflate.c | |
parent | d3714a7bd0b5440a42d91006fc3cbe773174b368 (diff) |
Handle case where inflateSync used when header never processed.
If zlib and/or gzip header processing was requested, but a header
was never provided and inflateSync was used successfully, then the
inflate state would be inconsistent, trying to compute a check
value but with no flags set. This commit sets the inflate mode to
raw in this case, since there is no other assumption that can be
made if a header was requested but never seen.
Diffstat (limited to 'inflate.c')
-rw-r--r-- | inflate.c | 2 |
1 files changed, 2 insertions, 0 deletions
@@ -1409,6 +1409,8 @@ int ZEXPORT PREFIX(inflateSync)(PREFIX3(stream) *strm) { /* return no joy or set up to restart inflate() on a new block */ if (state->have != 4) return Z_DATA_ERROR; + if (state->mode == HEAD) + state->wrap = 0; /* never processed header, so assume raw */ in = strm->total_in; out = strm->total_out; PREFIX(inflateReset)(strm); |