diff --git a/common/lz4/lz4.c b/common/lz4/lz4.c index f65fbb71e..7d6e1b356 100644 --- a/common/lz4/lz4.c +++ b/common/lz4/lz4.c @@ -322,6 +322,8 @@ static void LZ4_write32(void *memPtr, U32 value) { *(U32 *)memPtr = value; } typedef union { U16 u16; U32 u32; reg_t uArch; } __attribute__((packed)) unalign; static U16 LZ4_read16(const void *ptr) { return ((const unalign *)ptr)->u16; } +// Tolerate reads on buffer boundary +ATTRIBUTE_NO_SANITIZE_ADDRESS static U32 LZ4_read32(const void *ptr) { return ((const unalign *)ptr)->u32; } static reg_t LZ4_read_ARCH(const void *ptr) { return ((const unalign *)ptr)->uArch; } diff --git a/common/lz4/lz4.h b/common/lz4/lz4.h index 99d3dcfe7..c4ea38094 100644 --- a/common/lz4/lz4.h +++ b/common/lz4/lz4.h @@ -42,6 +42,11 @@ extern "C" { /* --- Dependency --- */ #include /* size_t */ +#if defined(__clang__) || defined (__GNUC__) +# define ATTRIBUTE_NO_SANITIZE_ADDRESS __attribute__((no_sanitize_address)) +#else +# define ATTRIBUTE_NO_SANITIZE_ADDRESS +#endif /** Introduction