Index: crypto/external/bsd/openssh/dist/umac.c =================================================================== RCS file: /cvsroot/src/crypto/external/bsd/openssh/dist/umac.c,v retrieving revision 1.10 diff -p -u -u -r1.10 umac.c --- crypto/external/bsd/openssh/dist/umac.c 15 Jun 2016 02:12:14 -0000 1.10 +++ crypto/external/bsd/openssh/dist/umac.c 15 Jun 2016 04:19:02 -0000 @@ -566,9 +566,6 @@ static void nh_transform(nh_ctx *hc, con /* ---------------------------------------------------------------------- */ #if (__LITTLE_ENDIAN__) -#if __GNUC_PREREQ__(5, 3) && defined(__arm__) -__attribute__((__optimize__("no-strict-aliasing"))) -#endif static void endian_convert(void *buf, UWORD bpw, UINT32 num_bytes) /* We endian convert the keys on little-endian computers to */ /* compensate for the lack of big-endian memory reads during hashing. */ @@ -581,13 +578,13 @@ static void endian_convert(void *buf, UW p++; } while (--iters); } else if (bpw == 8) { - UINT32 *p = (UINT32 *)buf; - UINT32 t; + UINT64 *p = (UINT64 *)buf; + UINT64 th; + UINT64 t; do { - t = LOAD_UINT32_REVERSED(p+1); - p[1] = LOAD_UINT32_REVERSED(p); - p[0] = t; - p += 2; + t = LOAD_UINT32_REVERSED((UINT32 *)p+1); + th = LOAD_UINT32_REVERSED((UINT32 *)p); + *p++ = t | (th << 32); } while (--iters); } }