From: Mika Lindqvist Date: Sun, 20 Sep 2020 01:25:21 +0000 (-0700) Subject: Fix unsigned integer overflow ASAN error for align_diff in crc_folding.c. X-Git-Tag: 1.9.9-b1~1 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=74b374d1c4e3494925b010424416dd3481c2ada7;p=thirdparty%2Fzlib-ng.git Fix unsigned integer overflow ASAN error for align_diff in crc_folding.c. zlib-ng/arch/x86/crc_folding.c:252:31: runtime error: unsigned integer overflow: 0 - 108370614813184 cannot be represented in type 'unsigned long' --- diff --git a/arch/x86/crc_folding.c b/arch/x86/crc_folding.c index 8e32d97b6..918bd9468 100644 --- a/arch/x86/crc_folding.c +++ b/arch/x86/crc_folding.c @@ -249,7 +249,7 @@ Z_INTERNAL void crc_fold_copy(deflate_state *const s, unsigned char *dst, const goto partial; } - algn_diff = ((uintptr_t)0 - (uintptr_t)src) & 0xF; + algn_diff = ((uintptr_t)16 - ((uintptr_t)src & 0xF)) & 0xF; if (algn_diff) { xmm_crc_part = _mm_loadu_si128((__m128i *)src); _mm_storeu_si128((__m128i *)dst, xmm_crc_part);