]> git.lizzy.rs Git - zlib.git/commitdiff
Handle case where inflateSync used when header never processed.
authorMark Adler <madler@alumni.caltech.edu>
Sun, 16 Apr 2017 15:35:33 +0000 (08:35 -0700)
committerMark Adler <madler@alumni.caltech.edu>
Sun, 16 Apr 2017 15:35:33 +0000 (08:35 -0700)
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.

inflate.c

index a4b5b68c8a6ac0df179f8f649e32ab72007dc2bc..575fcdf82ad1060679ab144dc66b33a89d9001ef 100644 (file)
--- a/inflate.c
+++ b/inflate.c
@@ -1433,6 +1433,8 @@ z_streamp 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;
     inflateReset(strm);
     strm->total_in = in;  strm->total_out = out;