From 41b4ac55993d896222a7794c8758ffa63650ca84 Mon Sep 17 00:00:00 2001 From: Daniel Pouzzner Date: Thu, 20 Feb 2025 15:00:22 -0600 Subject: [PATCH] misc.c: undo changes in 82b50f19c6 "when Intel x64 build, assume able to read/write unaligned" -- provokes sanitizer on amd64, and is not portable (e.g. different behavior on Intel vs AMD). all performance-sensitive word64 reads/writes should be on known-aligned data. --- wolfcrypt/src/misc.c | 32 -------------------------------- 1 file changed, 32 deletions(-) diff --git a/wolfcrypt/src/misc.c b/wolfcrypt/src/misc.c index 2dc806852..5af55ec67 100644 --- a/wolfcrypt/src/misc.c +++ b/wolfcrypt/src/misc.c @@ -254,36 +254,6 @@ WC_MISC_STATIC WC_INLINE void writeUnalignedWords32(byte *out, const word32 *in, #if defined(WORD64_AVAILABLE) && !defined(WOLFSSL_NO_WORD64_OPS) -#ifdef WOLFSSL_X86_64_BUILD - -WC_MISC_STATIC WC_INLINE word64 readUnalignedWord64(const byte *in) -{ - return ((word64*)in)[0]; -} - -WC_MISC_STATIC WC_INLINE word64 writeUnalignedWord64(void *out, word64 in) -{ - return ((word64*)out)[0] = in; -} - -WC_MISC_STATIC WC_INLINE void readUnalignedWords64(word64 *out, const byte *in, - size_t count) -{ - const word64 *in_word64 = (const word64 *)in; - while (count-- > 0) - *out++ = *in_word64++; -} - -WC_MISC_STATIC WC_INLINE void writeUnalignedWords64(byte *out, const word64 *in, - size_t count) -{ - word64 *out_word64 = (word64 *)out; - while (count-- > 0) - *out_word64++ = *in++; -} - -#else - WC_MISC_STATIC WC_INLINE word64 readUnalignedWord64(const byte *in) { if (((wc_ptr_t)in & (wc_ptr_t)(sizeof(word64) - 1U)) == (wc_ptr_t)0) @@ -331,8 +301,6 @@ WC_MISC_STATIC WC_INLINE void writeUnalignedWords64(byte *out, const word64 *in, } } -#endif - WC_MISC_STATIC WC_INLINE word64 rotlFixed64(word64 x, word64 y) { return (x << y) | (x >> (sizeof(y) * 8 - y));