From e90c38617990885b35d53e13d63dd2b9867aff88 Mon Sep 17 00:00:00 2001 From: Philippe Teuwen Date: Tue, 6 Oct 2020 16:59:40 +0200 Subject: [PATCH] LZ4: silent AddressSanitizer false positive? int8_t x = 0; <= writing 2 bytes?? --- common/lz4/lz4hc.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/common/lz4/lz4hc.c b/common/lz4/lz4hc.c index 6c047f221..6e74164a5 100644 --- a/common/lz4/lz4hc.c +++ b/common/lz4/lz4hc.c @@ -61,6 +61,12 @@ # pragma clang diagnostic ignored "-Wunused-function" #endif +#if defined(__clang__) || defined (__GNUC__) +# define ATTRIBUTE_NO_SANITIZE_ADDRESS __attribute__((no_sanitize_address)) +#else +# define ATTRIBUTE_NO_SANITIZE_ADDRESS +#endif + /*=== Enums ===*/ typedef enum { noDictCtx, usingDictCtxHc } dictCtx_directive; @@ -980,7 +986,10 @@ int LZ4_freeStreamHC(LZ4_streamHC_t *LZ4_streamHCPtr) { return 0; } - +// Skip AddressSanitizer which breaks compilation strangely on +// lz4/lz4hc.c: error: writing 2 bytes into a region of size 1 [-Werror=stringop-overflow=] +// | LZ4_streamHCPtr->internal_donotuse.favorDecSpeed = 0; +ATTRIBUTE_NO_SANITIZE_ADDRESS LZ4_streamHC_t *LZ4_initStreamHC(void *buffer, size_t size) { LZ4_streamHC_t *const LZ4_streamHCPtr = (LZ4_streamHC_t *)buffer; if (buffer == NULL) return NULL;