From d259e194df12569c8fe286eacd285be28118ecd7 Mon Sep 17 00:00:00 2001 From: CoprDistGit Date: Sat, 7 Nov 2026 06:22:11 +0000 Subject: automatic import of zlib --- ...bug-in-ZLIB_DEBUG-compiles-in-check_match.patch | 50 ++++++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 backport-Fix-a-bug-in-ZLIB_DEBUG-compiles-in-check_match.patch (limited to 'backport-Fix-a-bug-in-ZLIB_DEBUG-compiles-in-check_match.patch') diff --git a/backport-Fix-a-bug-in-ZLIB_DEBUG-compiles-in-check_match.patch b/backport-Fix-a-bug-in-ZLIB_DEBUG-compiles-in-check_match.patch new file mode 100644 index 0000000..18bc6a8 --- /dev/null +++ b/backport-Fix-a-bug-in-ZLIB_DEBUG-compiles-in-check_match.patch @@ -0,0 +1,50 @@ +From 7af6320ad78b390de42f414fabdc64dc6d67a5ea Mon Sep 17 00:00:00 2001 +From: Mark Adler +Date: Fri, 19 Jan 2024 12:19:53 -0800 +Subject: [PATCH] Fix a bug in ZLIB_DEBUG compiles in check_match(). + +This avoids trying to compare a match starting one byte before the +current window. Thanks to @zmodem (Hans) for discovering this. + +Reference:https://github.com/madler/zlib/commit/7af6320ad78b390de42f414fabdc64dc6d67a5ea +Conflict: Patch context adaptation + +--- + deflate.c | 20 ++++++++++++++------ + 1 file changed, 14 insertions(+), 6 deletions(-) + +diff --git a/deflate.c b/deflate.c +index 8088083..396ab12 100644 +--- a/deflate.c ++++ b/deflate.c +@@ -1510,13 +1510,21 @@ local void check_match(s, start, match, length) + int length; + { + /* check that the match is indeed a match */ +- if (zmemcmp(s->window + match, +- s->window + start, length) != EQUAL) { +- fprintf(stderr, " start %u, match %u, length %d\n", +- start, match, length); ++ Bytef *back = s->window + (int)match, *here = s->window + start; ++ IPos len = length; ++ if (match == (IPos)-1) { ++ /* match starts one byte before the current window -- just compare the ++ subsequent length-1 bytes */ ++ back++; ++ here++; ++ len--; ++ } ++ if (zmemcmp(back, here, len) != EQUAL) { ++ fprintf(stderr, " start %u, match %d, length %d\n", ++ start, (int)match, length); + do { +- fprintf(stderr, "%c%c", s->window[match++], s->window[start++]); +- } while (--length != 0); ++ fprintf(stderr, "(%02x %02x)", *back++, *here++); ++ } while (--len != 0); + z_error("invalid match"); + } + if (z_verbose > 1) { +-- +2.33.0 + -- cgit v1.2.3