mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-11-12 22:23:49 +01:00
Better error handling when trying to compress/decompress into empty buffer.
This patch ensures that we return TOR_COMPRESS_BUFFER_FULL in case we have a input bytes left to process, but are out of output buffer or in case we need to finish where the compression implementation might need to write an epilogue. See: https://bugs.torproject.org/23551
This commit is contained in:
parent
7f3dc8327a
commit
8d6940814a
3
changes/bug23551
Normal file
3
changes/bug23551
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
o Minor bugfixes (compression):
|
||||||
|
- Handle a pathological case when decompressing Zstandard data when the
|
||||||
|
output buffer size is zero. Fixes bug 23551; bugfix on 0.3.1.1-alpha.
|
@ -546,6 +546,13 @@ tor_compress_process(tor_compress_state_t *state,
|
|||||||
const size_t out_len_orig = *out_len;
|
const size_t out_len_orig = *out_len;
|
||||||
tor_compress_output_t rv;
|
tor_compress_output_t rv;
|
||||||
|
|
||||||
|
if (*out_len == 0 && (*in_len > 0 || finish)) {
|
||||||
|
// If we still have input data, but no space for output data, we might as
|
||||||
|
// well return early and let the caller do the reallocation of the out
|
||||||
|
// variable.
|
||||||
|
return TOR_COMPRESS_BUFFER_FULL;
|
||||||
|
}
|
||||||
|
|
||||||
switch (state->method) {
|
switch (state->method) {
|
||||||
case GZIP_METHOD:
|
case GZIP_METHOD:
|
||||||
case ZLIB_METHOD:
|
case ZLIB_METHOD:
|
||||||
|
Loading…
Reference in New Issue
Block a user