diff options
| author | CoprDistGit <infra@openeuler.org> | 2026-11-07 06:22:11 +0000 |
|---|---|---|
| committer | CoprDistGit <infra@openeuler.org> | 2026-11-07 06:22:11 +0000 |
| commit | d259e194df12569c8fe286eacd285be28118ecd7 (patch) | |
| tree | 838258e9a13837f135e94257e7d17db9c9218608 /backport-CVE-2026-27171.patch | |
| parent | b1143670a63c1a72a4bd0e0e4337fc5fa3be85b4 (diff) | |
automatic import of zlibopeneuler24.03_LTS_SP3
Diffstat (limited to 'backport-CVE-2026-27171.patch')
| -rw-r--r-- | backport-CVE-2026-27171.patch | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/backport-CVE-2026-27171.patch b/backport-CVE-2026-27171.patch new file mode 100644 index 0000000..c22968c --- /dev/null +++ b/backport-CVE-2026-27171.patch @@ -0,0 +1,60 @@ +From ba829a458576d1ff0f26fc7230c6de816d1f6a77 Mon Sep 17 00:00:00 2001 +From: Mark Adler <git@madler.net> +Date: Sun, 21 Dec 2025 18:17:56 -0800 +Subject: [PATCH] Check for negative lengths in crc32_combine functions. + +Though zlib.h says that len2 must be non-negative, this avoids the +possibility of an accidental infinite loop. + +link:https://github.com/madler/zlib/commit/ba829a458576d1ff0f26fc7230c6de816d1f6a77 +--- + crc32.c | 4 ++++ + zlib.h | 4 ++-- + 2 files changed, 6 insertions(+), 2 deletions(-) + +diff --git a/crc32.c b/crc32.c +index 23f8f8b..40f0810 100644 +--- a/crc32.c ++++ b/crc32.c +@@ -1133,6 +1133,8 @@ uLong ZEXPORT crc32_combine64(crc1, crc2, len2) + uLong crc2; + z_off64_t len2; + { ++ if (len2 < 0) ++ return 0; + #ifdef DYNAMIC_CRC_TABLE + once(&made, make_crc_table); + #endif /* DYNAMIC_CRC_TABLE */ +@@ -1152,6 +1154,8 @@ uLong ZEXPORT crc32_combine(crc1, crc2, len2) + uLong ZEXPORT crc32_combine_gen64(len2) + z_off64_t len2; + { ++ if (len2 < 0) ++ return 0; + #ifdef DYNAMIC_CRC_TABLE + once(&made, make_crc_table); + #endif /* DYNAMIC_CRC_TABLE */ +diff --git a/zlib.h b/zlib.h +index 953cb50..c9cecf3 100644 +--- a/zlib.h ++++ b/zlib.h +@@ -1755,14 +1755,14 @@ ZEXTERN uLong ZEXPORT crc32_combine OF((uLong crc1, uLong crc2, z_off_t len2)); + seq1 and seq2 with lengths len1 and len2, CRC-32 check values were + calculated for each, crc1 and crc2. crc32_combine() returns the CRC-32 + check value of seq1 and seq2 concatenated, requiring only crc1, crc2, and +- len2. ++ len2. len2 must be non-negativem, otherwise zero is returned. + */ + + /* + ZEXTERN uLong ZEXPORT crc32_combine_gen OF((z_off_t len2)); + + Return the operator corresponding to length len2, to be used with +- crc32_combine_op(). ++ crc32_combine_op(). len2 must be non-negative, otherwise zero is returned. + */ + + ZEXTERN uLong ZEXPORT crc32_combine_op OF((uLong crc1, uLong crc2, uLong op)); +-- +2.43.0 + |
