summaryrefslogtreecommitdiff
path: root/src/common/compress.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/common/compress.c')
-rw-r--r--src/common/compress.c7
1 files changed, 7 insertions, 0 deletions
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: