Browse Source

Merge pull request #5634 from douzzer/20220926-fixes

20220926-fixes
JacobBarthelmeh 1 year ago
parent
commit
ffe052e845
2 changed files with 28 additions and 7 deletions
  1. 24 3
      wolfcrypt/src/misc.c
  2. 4 4
      wolfssl/wolfcrypt/wc_port.h

+ 24 - 3
wolfcrypt/src/misc.c

@@ -187,11 +187,32 @@ WC_STATIC WC_INLINE word32 ByteReverseWord32(word32 value)
 WC_STATIC WC_INLINE void ByteReverseWords(word32* out, const word32* in,
                                     word32 byteCount)
 {
-    word32 count = byteCount/(word32)sizeof(word32), i;
+    word32 count, i;
 
-    for (i = 0; i < count; i++)
-        out[i] = ByteReverseWord32(in[i]);
+#ifdef WOLFSSL_USE_ALIGN
+    if ((((size_t)in & 0x3) == 0) &&
+        (((size_t)out & 0x3) == 0))
+    {
+#endif
+        count = byteCount/(word32)sizeof(word32);
+        for (i = 0; i < count; i++)
+            out[i] = ByteReverseWord32(in[i]);
+#ifdef WOLFSSL_USE_ALIGN
+    }
+    else {
+        byte *in_bytes = (byte *)in;
+        byte *out_bytes = (byte *)out;
+        word32 scratch;
+
+        byteCount &= ~0x3U;
 
+        for (i = 0; i < byteCount; i += sizeof(word32)) {
+            XMEMCPY(&scratch, in_bytes + i, sizeof(scratch));
+            scratch = ByteReverseWord32(scratch);
+            XMEMCPY(out_bytes + i, &scratch, sizeof(scratch));
+        }
+    }
+#endif
 }
 
 #if defined(WORD64_AVAILABLE) && !defined(WOLFSSL_NO_WORD64_OPS)

+ 4 - 4
wolfssl/wolfcrypt/wc_port.h

@@ -766,10 +766,10 @@ WOLFSSL_ABI WOLFSSL_API int wolfCrypt_Cleanup(void);
 
 #elif defined(WOLFSSL_DEOS) || defined(WOLFSSL_DEOS_RTEMS)
     #include <time.h>
-	#ifndef XTIME
-		extern time_t deos_time(time_t* timer);
-		#define XTIME(t1) deos_time((t1))
-	#endif
+        #ifndef XTIME
+            extern time_t deos_time(time_t* timer);
+            #define XTIME(t1) deos_time((t1))
+        #endif
 #elif defined(MICRIUM)
     #include <clk.h>
     #include <time.h>