已关闭
fix: CVE-2026-27171 crc32_combine CPU consumption (backport of zlib 1.3.2 fix) [OpenHarmony-6.1-Release] #117
fix: CVE-2026-27171 crc32_combine CPU consumption (backport of zlib 1.3.2 fix) [OpenHarmony-6.1-Release] #117
已关闭
wu-jinpeng981212创建于 28 天前关闭于 6 天前
1 个文件变更+6-6
Mcrc32.c+6-6
@@ -173,13 +173,13 @@ local z_crc_t multmodp(z_crc_t a, z_crc_t b)
173 173 
174/*174/*
175 Return x^(n * 2^k) modulo p(x). Requires that x2n_table[] has been175 Return x^(n * 2^k) modulo p(x). Requires that x2n_table[] has been
176- initialized.176+ initialized. n must not be negative.
177 */177 */
178-local z_crc_t x2nmodp(z_off64_t n, unsigned k)178+local uLong x2nmodp(z_off64_t n, unsigned k)
179{179{
180- z_crc_t p;180+ uLong p;
181 181 
182- p = (z_crc_t)1 << 31; /* x^0 == 1 */182+ p = (uLong)1 << 31; /* x^0 == 1 */
183 while (n) {183 while (n) {
184 if (n & 1)184 if (n & 1)
185 p = multmodp(x2n_table[k & 31], p);185 p = multmodp(x2n_table[k & 31], p);
@@ -538,7 +538,7 @@ local void braid(z_crc_t ltl[][256], z_word_t big[][256], int n, int w)
538 int k;538 int k;
539 z_crc_t i, p, q;539 z_crc_t i, p, q;
540 for (k = 0; k < w; k++) {540 for (k = 0; k < w; k++) {
541- p = x2nmodp((n * w + 3 - k) << 3, 0);541+ p = (z_crc_t)x2nmodp((n * w + 3 - k) << 3, 0);
542 ltl[k][0] = 0;542 ltl[k][0] = 0;
543 big[w - 1 - k][0] = 0;543 big[w - 1 - k][0] = 0;
544 for (i = 1; i < 256; i++) {544 for (i = 1; i < 256; i++) {
@@ -649,7 +649,7 @@ unsigned long ZEXPORT crc32_z(unsigned long crc, const unsigned char FAR *buf,
649 }649 }
650 word += 3 * last;650 word += 3 * last;
651 num -= 3 * last;651 num -= 3 * last;
652- val = x2nmodp(last, 6);652+ val = x2nmodp((int)last, 6);
653 crc = multmodp(val, crc) ^ crc1;653 crc = multmodp(val, crc) ^ crc1;
654 crc = multmodp(val, crc) ^ crc2;654 crc = multmodp(val, crc) ^ crc2;
655 }655 }