]> git.ipfire.org Git - thirdparty/xz.git/commitdiff
liblzma: Mark crc64_clmul() with __attribute__((__no_sanitize_address__)).
authorLasse Collin <lasse.collin@tukaani.org>
Thu, 14 Sep 2023 13:34:07 +0000 (16:34 +0300)
committerLasse Collin <lasse.collin@tukaani.org>
Thu, 14 Sep 2023 13:34:07 +0000 (16:34 +0300)
Thanks to Agostino Sarubbo.
Fixes: https://github.com/tukaani-project/xz/issues/62
src/liblzma/check/crc64_fast.c

index f6e872ed32b50f85956ef67d438c479e16dc5283..62c2c9bb7f50a10c2a8d4cd7dd5c6471e4d2d47e 100644 (file)
@@ -206,6 +206,14 @@ calc_hi(uint64_t poly, uint64_t a)
 #if (defined(__GNUC__) || defined(__clang__)) && !defined(__EDG__)
 __attribute__((__target__("ssse3,sse4.1,pclmul")))
 #endif
+// The intrinsics use 16-byte-aligned reads from buf, thus they may read
+// up to 15 bytes before or after the buffer (depending on the alignment
+// of the buf argument). The values of the extra bytes are ignored.
+// This unavoidably trips -fsanitize=address so address sanitizier has
+// to be disabled for this function.
+#if lzma_has_attribute(__no_sanitize_address__)
+__attribute__((__no_sanitize_address__))
+#endif
 static uint64_t
 crc64_clmul(const uint8_t *buf, size_t size, uint64_t crc)
 {