From: Nathan Moinvaziri Date: Wed, 22 Nov 2023 06:30:45 +0000 (-0800) Subject: Added unit test for inflate with Z_FINISH and no window. X-Git-Tag: 2.1.5~2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=0b3bb1d823245334861628176ccec4095f352cbf;p=thirdparty%2Fzlib-ng.git Added unit test for inflate with Z_FINISH and no window. This test decompresses a small git pack object with the text: "alone in the dark". By providing inflate with Z_FINISH, it should not use a sliding window according to zlib docs. We purposefully limit the read buffer size to trigger CHECK mode to bail early. --- diff --git a/test/GH-1600/packobj.gz b/test/GH-1600/packobj.gz new file mode 100644 index 00000000..d6c4405c Binary files /dev/null and b/test/GH-1600/packobj.gz differ diff --git a/test/cmake/test-issues.cmake b/test/cmake/test-issues.cmake index 1ffb3abd..05a35000 100644 --- a/test/cmake/test-issues.cmake +++ b/test/cmake/test-issues.cmake @@ -66,3 +66,11 @@ add_test(NAME GH-751 -DTEST_NAME=GH-751-test-txt -DINPUT=${CMAKE_CURRENT_SOURCE_DIR}/GH-751/test.txt -P ${CMAKE_CURRENT_SOURCE_DIR}/cmake/compress-and-verify.cmake) + +set(TEST_COMMAND ${MINIDEFLATE_COMMAND} + "-d;-k;-s;4;${CMAKE_CURRENT_SOURCE_DIR}/GH-1600/packobj.gz") +add_test(NAME GH-1600-no-window-check COMMAND ${TEST_COMMAND}) + +set(TEST_COMMAND ${MINIDEFLATE_COMMAND} + "-d;-k;-s;4;-r;25;${CMAKE_CURRENT_SOURCE_DIR}/GH-1600/packobj.gz") +add_test(NAME GH-1600-no-window-no-check COMMAND ${TEST_COMMAND}) diff --git a/test/minideflate.c b/test/minideflate.c index 61fbe43c..6b16a032 100644 --- a/test/minideflate.c +++ b/test/minideflate.c @@ -167,6 +167,12 @@ void inflate_params(FILE *fin, FILE *fout, int32_t read_buf_size, int32_t write_ do { err = PREFIX(inflate)(&d_stream, flush); + + /* Ignore Z_BUF_ERROR if we are finishing and read buffer size is + * purposefully limited */ + if (flush == Z_FINISH && err == Z_BUF_ERROR && read_buf_size != BUFSIZE) + err = Z_OK; + if (err == Z_STREAM_END) break; CHECK_ERR(err, "inflate");