]> git.ipfire.org Git - thirdparty/zlib-ng.git/commitdiff
Fixed missing window_padding added to window alloc size in deflateCopy.
authorNathan Moinvaziri <nathan@nathanm.com>
Mon, 25 May 2020 22:00:54 +0000 (15:00 -0700)
committerHans Kristian Rosbach <hk-github@circlestorm.org>
Wed, 27 May 2020 14:01:32 +0000 (16:01 +0200)
deflate.c

index 6825f3efbf3d5432ca29d5e80d2bbc8515993dae..8dc6d35c649a02d7d2da14673a5031bd1a01fe3a 100644 (file)
--- a/deflate.c
+++ b/deflate.c
@@ -257,7 +257,7 @@ int ZEXPORT PREFIX(deflateInit_)(PREFIX3(stream) *strm, int level, const char *v
 /* ========================================================================= */
 int ZEXPORT PREFIX(deflateInit2_)(PREFIX3(stream) *strm, int level, int method, int windowBits,
                            int memLevel, int strategy, const char *version, int stream_size) {
-    unsigned window_padding = 0;
+    uint32_t window_padding = 0;
     deflate_state *s;
     int wrap = 1;
     static const char my_version[] = PREFIX2(VERSION);
@@ -1102,6 +1102,7 @@ int ZEXPORT PREFIX(deflateEnd)(PREFIX3(stream) *strm) {
 int ZEXPORT PREFIX(deflateCopy)(PREFIX3(stream) *dest, PREFIX3(stream) *source) {
     deflate_state *ds;
     deflate_state *ss;
+    uint32_t window_padding = 0;
 
     if (deflateStateCheck(source) || dest == NULL) {
         return Z_STREAM_ERROR;
@@ -1118,7 +1119,11 @@ int ZEXPORT PREFIX(deflateCopy)(PREFIX3(stream) *dest, PREFIX3(stream) *source)
     ZCOPY_STATE((void *)ds, (void *)ss, sizeof(deflate_state));
     ds->strm = dest;
 
-    ds->window = (unsigned char *) ZALLOC_WINDOW(dest, ds->w_size, 2*sizeof(unsigned char));
+#ifdef X86_PCLMULQDQ_CRC
+    window_padding = 8;
+#endif
+
+    ds->window = (unsigned char *) ZALLOC_WINDOW(dest, ds->w_size + window_padding, 2*sizeof(unsigned char));
     ds->prev   = (Pos *)  ZALLOC(dest, ds->w_size, sizeof(Pos));
     ds->head   = (Pos *)  ZALLOC(dest, ds->hash_size, sizeof(Pos));
     ds->pending_buf = (unsigned char *) ZALLOC(dest, ds->lit_bufsize, 4);