diff options
author | Nick Mathewson <nickm@torproject.org> | 2017-09-28 18:53:37 -0400 |
---|---|---|
committer | Nick Mathewson <nickm@torproject.org> | 2017-09-28 18:53:37 -0400 |
commit | 82f109c2b3cf159cd3329c4c575d737cff8e2c59 (patch) | |
tree | 555feb54ab200546286311d271e31e0d027b2024 | |
parent | 9b02641812c05ef2fb0d3148aaee023d89fb9af8 (diff) | |
parent | 8d6940814a90166e468cee810820e8fc5b74e89d (diff) | |
download | tor-82f109c2b3cf159cd3329c4c575d737cff8e2c59.tar.gz tor-82f109c2b3cf159cd3329c4c575d737cff8e2c59.zip |
Merge remote-tracking branch 'ahf-gitlab/bugs/23551-maint-0.3.1' into maint-0.3.1
-rw-r--r-- | changes/bug23551 | 3 | ||||
-rw-r--r-- | src/common/compress.c | 7 |
2 files changed, 10 insertions, 0 deletions
diff --git a/changes/bug23551 b/changes/bug23551 new file mode 100644 index 0000000000..2f918bfa3a --- /dev/null +++ b/changes/bug23551 @@ -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. diff --git a/src/common/compress.c b/src/common/compress.c index 7926faaa60..beeff5fcb8 100644 --- a/src/common/compress.c +++ b/src/common/compress.c @@ -546,6 +546,13 @@ tor_compress_process(tor_compress_state_t *state, const size_t out_len_orig = *out_len; 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) { case GZIP_METHOD: case ZLIB_METHOD: |