summaryrefslogtreecommitdiff
path: root/src/libsodium/crypto_generichash/blake2/ref/blake2-impl.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/libsodium/crypto_generichash/blake2/ref/blake2-impl.h')
-rw-r--r--src/libsodium/crypto_generichash/blake2/ref/blake2-impl.h13
1 files changed, 9 insertions, 4 deletions
diff --git a/src/libsodium/crypto_generichash/blake2/ref/blake2-impl.h b/src/libsodium/crypto_generichash/blake2/ref/blake2-impl.h
index 276d305..1838bff 100644
--- a/src/libsodium/crypto_generichash/blake2/ref/blake2-impl.h
+++ b/src/libsodium/crypto_generichash/blake2/ref/blake2-impl.h
@@ -15,13 +15,16 @@
#define __BLAKE2_IMPL_H__
#include <stdint.h>
+#include <string.h>
#include "utils.h"
static inline uint32_t load32( const void *src )
{
#if defined(NATIVE_LITTLE_ENDIAN)
- return *( uint32_t * )( src );
+ uint32_t w;
+ memcpy(&w, src, sizeof w);
+ return w;
#else
const uint8_t *p = ( const uint8_t * )src;
uint32_t w = *p++;
@@ -35,7 +38,9 @@ static inline uint32_t load32( const void *src )
static inline uint64_t load64( const void *src )
{
#if defined(NATIVE_LITTLE_ENDIAN)
- return *( uint64_t * )( src );
+ uint64_t w;
+ memcpy(&w, src, sizeof w);
+ return w;
#else
const uint8_t *p = ( const uint8_t * )src;
uint64_t w = *p++;
@@ -53,7 +58,7 @@ static inline uint64_t load64( const void *src )
static inline void store32( void *dst, uint32_t w )
{
#if defined(NATIVE_LITTLE_ENDIAN)
- *( uint32_t * )( dst ) = w;
+ memcpy(dst, &w, sizeof w);
#else
uint8_t *p = ( uint8_t * )dst;
*p++ = ( uint8_t )w; w >>= 8;
@@ -66,7 +71,7 @@ static inline void store32( void *dst, uint32_t w )
static inline void store64( void *dst, uint64_t w )
{
#if defined(NATIVE_LITTLE_ENDIAN)
- *( uint64_t * )( dst ) = w;
+ memcpy(dst, &w, sizeof w);
#else
uint8_t *p = ( uint8_t * )dst;
*p++ = ( uint8_t )w; w >>= 8;