已关闭
fix: CVE-2026-27171 crc32_combine CPU consumption (zlib 1.2.x backport) [OpenHarmony-4.1-Release] #123
fix: CVE-2026-27171 crc32_combine CPU consumption (zlib 1.2.x backport) [OpenHarmony-4.1-Release] #123
已关闭
wu-jinpeng981212创建于 25 天前关闭于 3 天前
1 个文件变更+7-7
Mcrc32.c+7-7
@@ -105,7 +105,7 @@
105 105 
106/* Local functions. */106/* Local functions. */
107local z_crc_t multmodp OF((z_crc_t a, z_crc_t b));107local z_crc_t multmodp OF((z_crc_t a, z_crc_t b));
108-local z_crc_t x2nmodp OF((z_off64_t n, unsigned k));108+local uLong x2nmodp OF((z_off64_t n, unsigned k));
109 109 
110#if defined(W) && (!defined(ARMCRC32) || defined(DYNAMIC_CRC_TABLE))110#if defined(W) && (!defined(ARMCRC32) || defined(DYNAMIC_CRC_TABLE))
111 local z_word_t byte_swap OF((z_word_t word));111 local z_word_t byte_swap OF((z_word_t word));
@@ -520,7 +520,7 @@ local void braid(ltl, big, n, w)
520 int k;520 int k;
521 z_crc_t i, p, q;521 z_crc_t i, p, q;
522 for (k = 0; k < w; k++) {522 for (k = 0; k < w; k++) {
523- p = x2nmodp((n * w + 3 - k) << 3, 0);523+ p = (z_crc_t)x2nmodp((n * w + 3 - k) << 3, 0);
524 ltl[k][0] = 0;524 ltl[k][0] = 0;
525 big[w - 1 - k][0] = 0;525 big[w - 1 - k][0] = 0;
526 for (i = 1; i < 256; i++) {526 for (i = 1; i < 256; i++) {
@@ -570,15 +570,15 @@ local z_crc_t multmodp(a, b)
570 570 
571/*571/*
572 Return x^(n * 2^k) modulo p(x). Requires that x2n_table[] has been572 Return x^(n * 2^k) modulo p(x). Requires that x2n_table[] has been
573- initialized.573+ initialized. n must not be negative.
574 */574 */
575-local z_crc_t x2nmodp(n, k)575+local uLong x2nmodp(n, k)
576 z_off64_t n;576 z_off64_t n;
577 unsigned k;577 unsigned k;
578{578{
579- z_crc_t p;579+ uLong p;
580 580 
581- p = (z_crc_t)1 << 31; /* x^0 == 1 */581+ p = (uLong)1 << 31; /* x^0 == 1 */
582 while (n) {582 while (n) {
583 if (n & 1)583 if (n & 1)
584 p = multmodp(x2n_table[k & 31], p);584 p = multmodp(x2n_table[k & 31], p);
@@ -690,7 +690,7 @@ unsigned long ZEXPORT crc32_z(crc, buf, len)
690 }690 }
691 word += 3 * last;691 word += 3 * last;
692 num -= 3 * last;692 num -= 3 * last;
693- val = x2nmodp(last, 6);693+ val = x2nmodp((int)last, 6);
694 crc = multmodp(val, crc) ^ crc1;694 crc = multmodp(val, crc) ^ crc1;
695 crc = multmodp(val, crc) ^ crc2;695 crc = multmodp(val, crc) ^ crc2;
696 }696 }