mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-11-28 14:23:30 +01:00
Treat Z_BUF_ERROR as TOR_ZLIB_BUF_FULL when finalizing a zlib buffer
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 (06e09cdd47
).
This commit is contained in:
parent
ad8977e394
commit
7573e66b99
5
changes/bug11824
Normal file
5
changes/bug11824
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
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.
|
@ -480,7 +480,7 @@ tor_zlib_process(tor_zlib_state_t *state,
|
|||||||
case Z_STREAM_END:
|
case Z_STREAM_END:
|
||||||
return TOR_ZLIB_DONE;
|
return TOR_ZLIB_DONE;
|
||||||
case Z_BUF_ERROR:
|
case Z_BUF_ERROR:
|
||||||
if (state->stream.avail_in == 0)
|
if (state->stream.avail_in == 0 && !finish)
|
||||||
return TOR_ZLIB_OK;
|
return TOR_ZLIB_OK;
|
||||||
return TOR_ZLIB_BUF_FULL;
|
return TOR_ZLIB_BUF_FULL;
|
||||||
case Z_OK:
|
case Z_OK:
|
||||||
|
Loading…
Reference in New Issue
Block a user