| From 608738ccad9ac3743ccd535bde1e84f401e6176f Mon Sep 17 00:00:00 2001 |
| From: Fabrice Fontaine <fontaine.fabrice@gmail.com> |
| Date: Sat, 20 Jun 2020 12:50:40 +0200 |
| Subject: [PATCH] sha2/sha2.c: fix build on big endian |
| |
| Build is broken since 865ec9ba1d44e629c1107c299aebd20e901a19ff because |
| tmp is undefined in put32be and put64be: |
| |
| sha2.c: In function 'put32be': |
| sha2.c:177:34: error: 'tmp' undeclared (first use in this function) |
| MEMCPY_BCOPY(data, &val, sizeof(tmp)); |
| ^~~ |
| |
| Fix this error by replacing tmp by val |
| |
| Moreover, move MEMCPY_BCOPY before its usage or linking step will fail |
| |
| Fixes: |
| - http://autobuild.buildroot.org/results/e8704e02fdede7b63e22da552292977b23380b32 |
| |
| Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com> |
| [Upstream: https://github.com/eclipse/tinydtls/commit/78a2d32f47165eda10cbf8f5cf79f86fa1c4872b] |
| --- |
| sha2/sha2.c | 58 ++++++++++++++++++++++++++--------------------------- |
| 1 file changed, 29 insertions(+), 29 deletions(-) |
| |
| diff --git a/sha2/sha2.c b/sha2/sha2.c |
| index cb6d90f..5c794c6 100644 |
| --- a/sha2/sha2.c |
| +++ b/sha2/sha2.c |
| @@ -114,6 +114,33 @@ |
| #error Define BYTE_ORDER to be equal to either LITTLE_ENDIAN or BIG_ENDIAN |
| #endif |
| |
| +/* |
| + * Macros for copying blocks of memory and for zeroing out ranges |
| + * of memory. Using these macros makes it easy to switch from |
| + * using memset()/memcpy() and using bzero()/bcopy(). |
| + * |
| + * Please define either SHA2_USE_MEMSET_MEMCPY or define |
| + * SHA2_USE_BZERO_BCOPY depending on which function set you |
| + * choose to use: |
| + */ |
| +#if !defined(SHA2_USE_MEMSET_MEMCPY) && !defined(SHA2_USE_BZERO_BCOPY) |
| +/* Default to memset()/memcpy() if no option is specified */ |
| +#define SHA2_USE_MEMSET_MEMCPY 1 |
| +#endif |
| +#if defined(SHA2_USE_MEMSET_MEMCPY) && defined(SHA2_USE_BZERO_BCOPY) |
| +/* Abort with an error if BOTH options are defined */ |
| +#error Define either SHA2_USE_MEMSET_MEMCPY or SHA2_USE_BZERO_BCOPY, not both! |
| +#endif |
| + |
| +#ifdef SHA2_USE_MEMSET_MEMCPY |
| +#define MEMSET_BZERO(p,l) memset((p), 0, (l)) |
| +#define MEMCPY_BCOPY(d,s,l) memcpy((d), (s), (l)) |
| +#endif |
| +#ifdef SHA2_USE_BZERO_BCOPY |
| +#define MEMSET_BZERO(p,l) bzero((p), (l)) |
| +#define MEMCPY_BCOPY(d,s,l) bcopy((s), (d), (l)) |
| +#endif |
| + |
| /* |
| * Define the followingsha2_* types to types of the correct length on |
| * the native archtecture. Most BSD systems and Linux define u_intXX_t |
| @@ -174,7 +201,7 @@ static inline void put32be(sha2_byte* data, sha2_word32 val) |
| data[1] = val; val >>= 8; |
| data[0] = val; |
| #else /* BYTE_ORDER != LITTLE_ENDIAN */ |
| - MEMCPY_BCOPY(data, &val, sizeof(tmp)); |
| + MEMCPY_BCOPY(data, &val, sizeof(val)); |
| #endif /* BYTE_ORDER != LITTLE_ENDIAN */ |
| } |
| |
| @@ -209,7 +236,7 @@ static inline void put64be(sha2_byte* data, sha2_word64 val) |
| data[1] = val; val >>= 8; |
| data[0] = val; |
| #else /* BYTE_ORDER != LITTLE_ENDIAN */ |
| - MEMCPY_BCOPY(data, &val, sizeof(tmp)); |
| + MEMCPY_BCOPY(data, &val, sizeof(val)); |
| #endif /* BYTE_ORDER != LITTLE_ENDIAN */ |
| } |
| |
| @@ -225,33 +252,6 @@ static inline void put64be(sha2_byte* data, sha2_word64 val) |
| } \ |
| } |
| |
| -/* |
| - * Macros for copying blocks of memory and for zeroing out ranges |
| - * of memory. Using these macros makes it easy to switch from |
| - * using memset()/memcpy() and using bzero()/bcopy(). |
| - * |
| - * Please define either SHA2_USE_MEMSET_MEMCPY or define |
| - * SHA2_USE_BZERO_BCOPY depending on which function set you |
| - * choose to use: |
| - */ |
| -#if !defined(SHA2_USE_MEMSET_MEMCPY) && !defined(SHA2_USE_BZERO_BCOPY) |
| -/* Default to memset()/memcpy() if no option is specified */ |
| -#define SHA2_USE_MEMSET_MEMCPY 1 |
| -#endif |
| -#if defined(SHA2_USE_MEMSET_MEMCPY) && defined(SHA2_USE_BZERO_BCOPY) |
| -/* Abort with an error if BOTH options are defined */ |
| -#error Define either SHA2_USE_MEMSET_MEMCPY or SHA2_USE_BZERO_BCOPY, not both! |
| -#endif |
| - |
| -#ifdef SHA2_USE_MEMSET_MEMCPY |
| -#define MEMSET_BZERO(p,l) memset((p), 0, (l)) |
| -#define MEMCPY_BCOPY(d,s,l) memcpy((d), (s), (l)) |
| -#endif |
| -#ifdef SHA2_USE_BZERO_BCOPY |
| -#define MEMSET_BZERO(p,l) bzero((p), (l)) |
| -#define MEMCPY_BCOPY(d,s,l) bcopy((s), (d), (l)) |
| -#endif |
| - |
| |
| /*** THE SIX LOGICAL FUNCTIONS ****************************************/ |
| /* |
| -- |
| 2.26.2 |
| |