已关闭
fix: CVE-2026-27171 crc32_combine CPU consumption (zlib 1.2.x backport) [OpenHarmony-4.1-Release] #123
wu-jinpeng981212创建于 25 天前关闭于 3 天前
fix: CVE-2026-27171 crc32_combine CPU consumption (zlib 1.2.x backport) [OpenHarmony-4.1-Release] #123
已关闭
共 1 个文件变更+7-7
| @@ -105,7 +105,7 @@ | |||
| 105 | 105 | ||
| 106 | /* Local functions. */ | 106 | /* Local functions. */ |
| 107 | local z_crc_t multmodp OF((z_crc_t a, z_crc_t b)); | 107 | local 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 | 110 | ||
| 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 been | 572 | 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 | } |