hc
2024-03-22 619f0f87159c5dbd2755b1b0a0eb35784be84e7a
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
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