Otherwise, when we're out of input *and* finalizing, we might report
TOR_ZLIB_OK erroneously and not finalize the buffer.
(I don't believe this can happen in practice, with our code today:
write_to_buf_zlib ensures that we are never trying to write into a
completely empty buffer, and zlib says "Z_OK" if you give it even
one byte to write into.)
Fixes bug 11824; bugfix on 0.1.1.23 (
06e09cdd47eaa8f7e90ce2).
--- /dev/null
+ o Minor bugfixes:
+ - When trying to finalize a zlib stream where we have already
+ exhausted all the input bytes and we need more bytes in the
+ output buffer, do not report the the write as successful.
+ Fixes bug 11824; bugfix on 0.1.1.23.
case Z_STREAM_END:
return TOR_ZLIB_DONE;
case Z_BUF_ERROR:
- if (state->stream.avail_in == 0)
+ if (state->stream.avail_in == 0 && !finish)
return TOR_ZLIB_OK;
return TOR_ZLIB_BUF_FULL;
case Z_OK: