From fd3f9e858045068789603656f4fbd491c2b7dcbc Mon Sep 17 00:00:00 2001 From: David Goulet Date: Mon, 14 Aug 2023 11:03:47 -0400 Subject: zstd: Check errors right affer compressing/decompressing Considering a compression bomb before looking for errors led to false negative log warnings. Instead, it is possible the work failed for whatever reasons which is not indicative of a compression bomb. Fixes #40739 Signed-off-by: David Goulet --- src/lib/compress/compress_zstd.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) (limited to 'src') diff --git a/src/lib/compress/compress_zstd.c b/src/lib/compress/compress_zstd.c index 34a2e806f6..85c2bb3bfa 100644 --- a/src/lib/compress/compress_zstd.c +++ b/src/lib/compress/compress_zstd.c @@ -368,6 +368,13 @@ tor_zstd_compress_process(tor_zstd_compress_state_t *state, &output, &input); } + if (ZSTD_isError(retval)) { + log_warn(LD_GENERAL, "Zstandard %s didn't finish: %s.", + state->compress ? "compression" : "decompression", + ZSTD_getErrorName(retval)); + return TOR_COMPRESS_ERROR; + } + state->input_so_far += input.pos; state->output_so_far += output.pos; @@ -383,13 +390,6 @@ tor_zstd_compress_process(tor_zstd_compress_state_t *state, return TOR_COMPRESS_ERROR; } - if (ZSTD_isError(retval)) { - log_warn(LD_GENERAL, "Zstandard %s didn't finish: %s.", - state->compress ? "compression" : "decompression", - ZSTD_getErrorName(retval)); - return TOR_COMPRESS_ERROR; - } - if (state->compress && !state->have_called_end) { retval = ZSTD_flushStream(state->u.compress_stream, &output); -- cgit v1.2.3-54-g00ecf