1*4882a593SmuzhiyunFrom 608738ccad9ac3743ccd535bde1e84f401e6176f Mon Sep 17 00:00:00 2001 2*4882a593SmuzhiyunFrom: Fabrice Fontaine <fontaine.fabrice@gmail.com> 3*4882a593SmuzhiyunDate: Sat, 20 Jun 2020 12:50:40 +0200 4*4882a593SmuzhiyunSubject: [PATCH] sha2/sha2.c: fix build on big endian 5*4882a593Smuzhiyun 6*4882a593SmuzhiyunBuild is broken since 865ec9ba1d44e629c1107c299aebd20e901a19ff because 7*4882a593Smuzhiyuntmp is undefined in put32be and put64be: 8*4882a593Smuzhiyun 9*4882a593Smuzhiyunsha2.c: In function 'put32be': 10*4882a593Smuzhiyunsha2.c:177:34: error: 'tmp' undeclared (first use in this function) 11*4882a593Smuzhiyun MEMCPY_BCOPY(data, &val, sizeof(tmp)); 12*4882a593Smuzhiyun ^~~ 13*4882a593Smuzhiyun 14*4882a593SmuzhiyunFix this error by replacing tmp by val 15*4882a593Smuzhiyun 16*4882a593SmuzhiyunMoreover, move MEMCPY_BCOPY before its usage or linking step will fail 17*4882a593Smuzhiyun 18*4882a593SmuzhiyunFixes: 19*4882a593Smuzhiyun - http://autobuild.buildroot.org/results/e8704e02fdede7b63e22da552292977b23380b32 20*4882a593Smuzhiyun 21*4882a593SmuzhiyunSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com> 22*4882a593Smuzhiyun[Upstream: https://github.com/eclipse/tinydtls/commit/78a2d32f47165eda10cbf8f5cf79f86fa1c4872b] 23*4882a593Smuzhiyun--- 24*4882a593Smuzhiyun sha2/sha2.c | 58 ++++++++++++++++++++++++++--------------------------- 25*4882a593Smuzhiyun 1 file changed, 29 insertions(+), 29 deletions(-) 26*4882a593Smuzhiyun 27*4882a593Smuzhiyundiff --git a/sha2/sha2.c b/sha2/sha2.c 28*4882a593Smuzhiyunindex cb6d90f..5c794c6 100644 29*4882a593Smuzhiyun--- a/sha2/sha2.c 30*4882a593Smuzhiyun+++ b/sha2/sha2.c 31*4882a593Smuzhiyun@@ -114,6 +114,33 @@ 32*4882a593Smuzhiyun #error Define BYTE_ORDER to be equal to either LITTLE_ENDIAN or BIG_ENDIAN 33*4882a593Smuzhiyun #endif 34*4882a593Smuzhiyun 35*4882a593Smuzhiyun+/* 36*4882a593Smuzhiyun+ * Macros for copying blocks of memory and for zeroing out ranges 37*4882a593Smuzhiyun+ * of memory. Using these macros makes it easy to switch from 38*4882a593Smuzhiyun+ * using memset()/memcpy() and using bzero()/bcopy(). 39*4882a593Smuzhiyun+ * 40*4882a593Smuzhiyun+ * Please define either SHA2_USE_MEMSET_MEMCPY or define 41*4882a593Smuzhiyun+ * SHA2_USE_BZERO_BCOPY depending on which function set you 42*4882a593Smuzhiyun+ * choose to use: 43*4882a593Smuzhiyun+ */ 44*4882a593Smuzhiyun+#if !defined(SHA2_USE_MEMSET_MEMCPY) && !defined(SHA2_USE_BZERO_BCOPY) 45*4882a593Smuzhiyun+/* Default to memset()/memcpy() if no option is specified */ 46*4882a593Smuzhiyun+#define SHA2_USE_MEMSET_MEMCPY 1 47*4882a593Smuzhiyun+#endif 48*4882a593Smuzhiyun+#if defined(SHA2_USE_MEMSET_MEMCPY) && defined(SHA2_USE_BZERO_BCOPY) 49*4882a593Smuzhiyun+/* Abort with an error if BOTH options are defined */ 50*4882a593Smuzhiyun+#error Define either SHA2_USE_MEMSET_MEMCPY or SHA2_USE_BZERO_BCOPY, not both! 51*4882a593Smuzhiyun+#endif 52*4882a593Smuzhiyun+ 53*4882a593Smuzhiyun+#ifdef SHA2_USE_MEMSET_MEMCPY 54*4882a593Smuzhiyun+#define MEMSET_BZERO(p,l) memset((p), 0, (l)) 55*4882a593Smuzhiyun+#define MEMCPY_BCOPY(d,s,l) memcpy((d), (s), (l)) 56*4882a593Smuzhiyun+#endif 57*4882a593Smuzhiyun+#ifdef SHA2_USE_BZERO_BCOPY 58*4882a593Smuzhiyun+#define MEMSET_BZERO(p,l) bzero((p), (l)) 59*4882a593Smuzhiyun+#define MEMCPY_BCOPY(d,s,l) bcopy((s), (d), (l)) 60*4882a593Smuzhiyun+#endif 61*4882a593Smuzhiyun+ 62*4882a593Smuzhiyun /* 63*4882a593Smuzhiyun * Define the followingsha2_* types to types of the correct length on 64*4882a593Smuzhiyun * the native archtecture. Most BSD systems and Linux define u_intXX_t 65*4882a593Smuzhiyun@@ -174,7 +201,7 @@ static inline void put32be(sha2_byte* data, sha2_word32 val) 66*4882a593Smuzhiyun data[1] = val; val >>= 8; 67*4882a593Smuzhiyun data[0] = val; 68*4882a593Smuzhiyun #else /* BYTE_ORDER != LITTLE_ENDIAN */ 69*4882a593Smuzhiyun- MEMCPY_BCOPY(data, &val, sizeof(tmp)); 70*4882a593Smuzhiyun+ MEMCPY_BCOPY(data, &val, sizeof(val)); 71*4882a593Smuzhiyun #endif /* BYTE_ORDER != LITTLE_ENDIAN */ 72*4882a593Smuzhiyun } 73*4882a593Smuzhiyun 74*4882a593Smuzhiyun@@ -209,7 +236,7 @@ static inline void put64be(sha2_byte* data, sha2_word64 val) 75*4882a593Smuzhiyun data[1] = val; val >>= 8; 76*4882a593Smuzhiyun data[0] = val; 77*4882a593Smuzhiyun #else /* BYTE_ORDER != LITTLE_ENDIAN */ 78*4882a593Smuzhiyun- MEMCPY_BCOPY(data, &val, sizeof(tmp)); 79*4882a593Smuzhiyun+ MEMCPY_BCOPY(data, &val, sizeof(val)); 80*4882a593Smuzhiyun #endif /* BYTE_ORDER != LITTLE_ENDIAN */ 81*4882a593Smuzhiyun } 82*4882a593Smuzhiyun 83*4882a593Smuzhiyun@@ -225,33 +252,6 @@ static inline void put64be(sha2_byte* data, sha2_word64 val) 84*4882a593Smuzhiyun } \ 85*4882a593Smuzhiyun } 86*4882a593Smuzhiyun 87*4882a593Smuzhiyun-/* 88*4882a593Smuzhiyun- * Macros for copying blocks of memory and for zeroing out ranges 89*4882a593Smuzhiyun- * of memory. Using these macros makes it easy to switch from 90*4882a593Smuzhiyun- * using memset()/memcpy() and using bzero()/bcopy(). 91*4882a593Smuzhiyun- * 92*4882a593Smuzhiyun- * Please define either SHA2_USE_MEMSET_MEMCPY or define 93*4882a593Smuzhiyun- * SHA2_USE_BZERO_BCOPY depending on which function set you 94*4882a593Smuzhiyun- * choose to use: 95*4882a593Smuzhiyun- */ 96*4882a593Smuzhiyun-#if !defined(SHA2_USE_MEMSET_MEMCPY) && !defined(SHA2_USE_BZERO_BCOPY) 97*4882a593Smuzhiyun-/* Default to memset()/memcpy() if no option is specified */ 98*4882a593Smuzhiyun-#define SHA2_USE_MEMSET_MEMCPY 1 99*4882a593Smuzhiyun-#endif 100*4882a593Smuzhiyun-#if defined(SHA2_USE_MEMSET_MEMCPY) && defined(SHA2_USE_BZERO_BCOPY) 101*4882a593Smuzhiyun-/* Abort with an error if BOTH options are defined */ 102*4882a593Smuzhiyun-#error Define either SHA2_USE_MEMSET_MEMCPY or SHA2_USE_BZERO_BCOPY, not both! 103*4882a593Smuzhiyun-#endif 104*4882a593Smuzhiyun- 105*4882a593Smuzhiyun-#ifdef SHA2_USE_MEMSET_MEMCPY 106*4882a593Smuzhiyun-#define MEMSET_BZERO(p,l) memset((p), 0, (l)) 107*4882a593Smuzhiyun-#define MEMCPY_BCOPY(d,s,l) memcpy((d), (s), (l)) 108*4882a593Smuzhiyun-#endif 109*4882a593Smuzhiyun-#ifdef SHA2_USE_BZERO_BCOPY 110*4882a593Smuzhiyun-#define MEMSET_BZERO(p,l) bzero((p), (l)) 111*4882a593Smuzhiyun-#define MEMCPY_BCOPY(d,s,l) bcopy((s), (d), (l)) 112*4882a593Smuzhiyun-#endif 113*4882a593Smuzhiyun- 114*4882a593Smuzhiyun 115*4882a593Smuzhiyun /*** THE SIX LOGICAL FUNCTIONS ****************************************/ 116*4882a593Smuzhiyun /* 117*4882a593Smuzhiyun-- 118*4882a593Smuzhiyun2.26.2 119*4882a593Smuzhiyun 120