diff --git a/bsc1174551-fxi-imcomplete-raw-streams.patch b/bsc1174551-fxi-imcomplete-raw-streams.patch new file mode 100644 index 0000000..9cf5426 --- /dev/null +++ b/bsc1174551-fxi-imcomplete-raw-streams.patch @@ -0,0 +1,34 @@ +diff --git a/deflate.c b/deflate.c +index 3c302bc..1ab1635 100644 +--- a/deflate.c ++++ b/deflate.c +@@ -1110,7 +1110,6 @@ int ZEXPORT deflate (strm, flush) + } + + if (flush != Z_FINISH) return Z_OK; +- if (s->wrap <= 0) return Z_STREAM_END; + + /* Write the trailer */ + #ifdef GZIP +@@ -1126,7 +1125,7 @@ int ZEXPORT deflate (strm, flush) + } + else + #endif +- { ++ if (s->wrap == 1) { + putShortMSB(s, (uInt)(strm->adler >> 16)); + putShortMSB(s, (uInt)(strm->adler & 0xffff)); + } +@@ -1135,7 +1134,11 @@ int ZEXPORT deflate (strm, flush) + * to flush the rest. + */ + if (s->wrap > 0) s->wrap = -s->wrap; /* write the trailer only once! */ +- return s->pending != 0 ? Z_OK : Z_STREAM_END; ++ if (s->pending == 0) { ++ Assert(s->bi_valid == 0, "bi_buf not flushed"); ++ return Z_STREAM_END; ++ } ++ return Z_OK; + } + + /* ========================================================================= */ diff --git a/bsc1174736-DFLTCC_LEVEL_MASK-set-to-0x1ff.patch b/bsc1174736-DFLTCC_LEVEL_MASK-set-to-0x1ff.patch new file mode 100644 index 0000000..71059fa --- /dev/null +++ b/bsc1174736-DFLTCC_LEVEL_MASK-set-to-0x1ff.patch @@ -0,0 +1,51 @@ +Index: zlib-1.2.11/deflate.c +=================================================================== +--- zlib-1.2.11.orig/deflate.c ++++ zlib-1.2.11/deflate.c +@@ -504,7 +504,7 @@ int ZEXPORT deflateResetKeep (strm) + s->wrap == 2 ? crc32(0L, Z_NULL, 0) : + #endif + adler32(0L, Z_NULL, 0); +- s->last_flush = Z_NO_FLUSH; ++ s->last_flush = -2; + + _tr_init(s); + +@@ -601,13 +601,13 @@ int ZEXPORT deflateParams(strm, level, s + func = configuration_table[s->level].func; + + if ((strategy != s->strategy || func != configuration_table[level].func || +- hook_flush != Z_NO_FLUSH) && s->high_water) { ++ hook_flush != Z_NO_FLUSH) && s->last_flush != -2) { + /* Flush the last buffer: */ + int err = deflate(strm, RANK(hook_flush) > RANK(Z_BLOCK) ? + hook_flush : Z_BLOCK); + if (err == Z_STREAM_ERROR) + return err; +- if (strm->avail_out == 0) ++ if (strm->avail_in || (s->strstart - s->block_start) + s->lookahead) + return Z_BUF_ERROR; + } + if (s->level != level) { +Index: zlib-1.2.11/zlib.h +=================================================================== +--- zlib-1.2.11.orig/zlib.h ++++ zlib-1.2.11/zlib.h +@@ -712,11 +712,12 @@ ZEXTERN int ZEXPORT deflateParams OF((z_ + used to switch between compression and straight copy of the input data, or + to switch to a different kind of input data requiring a different strategy. + If the compression approach (which is a function of the level) or the +- strategy is changed, and if any input has been consumed in a previous +- deflate() call, then the input available so far is compressed with the old +- level and strategy using deflate(strm, Z_BLOCK). There are three approaches +- for the compression levels 0, 1..3, and 4..9 respectively. The new level +- and strategy will take effect at the next call of deflate(). ++ strategy is changed, and if there have been any deflate() calls since the ++ state was initialized or reset, then the input available so far is ++ compressed with the old level and strategy using deflate(strm, Z_BLOCK). ++ There are three approaches for the compression levels 0, 1..3, and 4..9 ++ respectively. The new level and strategy will take effect at the next call ++ of deflate(). + + If a deflate(strm, Z_BLOCK) is performed by deflateParams(), and it does + not have enough output space to complete, then the parameter change will not diff --git a/zlib.changes b/zlib.changes index 6859afa..d30b5ed 100644 --- a/zlib.changes +++ b/zlib.changes @@ -1,3 +1,11 @@ +------------------------------------------------------------------- +Thu Aug 6 08:36:48 UTC 2020 - Lidong Zhong + +- Permit a deflateParams() parameter change as soon as possible(bsc#1174736) + * bsc1174736-DFLTCC_LEVEL_MASK-set-to-0x1ff.patch + Fix DFLTCC not flushing EOBS when creating raw streams(bsc#1174551) + * bsc1174551-fxi-imcomplete-raw-streams.patch + ------------------------------------------------------------------- Thu Apr 23 08:17:19 UTC 2020 - Tomáš Chvátal diff --git a/zlib.spec b/zlib.spec index 1efa06f..4715d05 100644 --- a/zlib.spec +++ b/zlib.spec @@ -41,6 +41,8 @@ Patch4: 410.patch #PATCH-FIX-SUSE do not check exact version match as the lib can be updated # we should simply rely on soname versioning to protect us Patch5: zlib-no-version-check.patch +Patch6: bsc1174736-DFLTCC_LEVEL_MASK-set-to-0x1ff.patch +Patch7: bsc1174551-fxi-imcomplete-raw-streams.patch BuildRequires: autoconf BuildRequires: automake BuildRequires: libtool @@ -122,6 +124,8 @@ developing applications which use minizip. %patch3 -p1 %patch4 -p1 %patch5 -p1 +%patch6 -p1 +%patch7 -p1 cp %{SOURCE4} . %build