Skip to content

Commit 4b5c597

Browse files
Marcin TomczykSeppo Takalo
Marcin Tomczyk
authored and
Seppo Takalo
committed
IOTSTOR-922 - [Bootloader] Possible deadlock in upgdade.cpp / upgradeApplicationFromStorage() - refactoring remove event handling
1 parent ad09554 commit 4b5c597

File tree

18 files changed

+274
-584
lines changed

18 files changed

+274
-584
lines changed

TESTS/bootloader/hmac/main.cpp

+37-37
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@
3636
#define __STDC_FORMAT_MACROS
3737
#include <inttypes.h>
3838

39-
extern "C" arm_uc_error_t ARM_UC_cryptoHMACSHA256(arm_uc_buffer_t *key, arm_uc_buffer_t *input,
39+
extern "C" int32_t ARM_UC_cryptoHMACSHA256(arm_uc_buffer_t *key, arm_uc_buffer_t *input,
4040
arm_uc_buffer_t *output);
4141

4242
using namespace utest::v1;
@@ -65,7 +65,7 @@ static uint8_t hash_bootloader[HASH_SIZE] = { 0 };
6565

6666
static control_t test_unit(const size_t call_count)
6767
{
68-
arm_uc_error_t result;
68+
int32_t result;
6969

7070
arm_uc_buffer_t key_buffer = { 0 };
7171
arm_uc_buffer_t input_buffer = { 0 };
@@ -75,35 +75,35 @@ static control_t test_unit(const size_t call_count)
7575
* Test invalid buffers.
7676
*/
7777
result = ARM_UC_cryptoHMACSHA256(NULL, NULL, NULL);
78-
TEST_ASSERT_EQUAL_INT_MESSAGE(ARM_UC_CU_ERR_INVALID_PARAMETER, result.code,
78+
TEST_ASSERT_EQUAL_INT_MESSAGE(ARM_UC_CU_ERR_INVALID_PARAMETER, result,
7979
"bootloader hmac returned wrong error code");
8080

8181
result = ARM_UC_cryptoHMACSHA256(&key_buffer, NULL, NULL);
82-
TEST_ASSERT_EQUAL_INT_MESSAGE(ARM_UC_CU_ERR_INVALID_PARAMETER, result.code,
82+
TEST_ASSERT_EQUAL_INT_MESSAGE(ARM_UC_CU_ERR_INVALID_PARAMETER, result,
8383
"bootloader hmac returned wrong error code");
8484

8585
result = ARM_UC_cryptoHMACSHA256(&key_buffer, &input_buffer, NULL);
86-
TEST_ASSERT_EQUAL_INT_MESSAGE(ARM_UC_CU_ERR_INVALID_PARAMETER, result.code,
86+
TEST_ASSERT_EQUAL_INT_MESSAGE(ARM_UC_CU_ERR_INVALID_PARAMETER, result,
8787
"bootloader hmac returned wrong error code");
8888

8989
result = ARM_UC_cryptoHMACSHA256(&key_buffer, &input_buffer, &output_buffer);
90-
TEST_ASSERT_EQUAL_INT_MESSAGE(ARM_UC_CU_ERR_INVALID_PARAMETER, result.code,
90+
TEST_ASSERT_EQUAL_INT_MESSAGE(ARM_UC_CU_ERR_INVALID_PARAMETER, result,
9191
"bootloader hmac returned wrong error code");
9292

9393
result = ARM_UC_cryptoHMACSHA256(&key_buffer, NULL, &output_buffer);
94-
TEST_ASSERT_EQUAL_INT_MESSAGE(ARM_UC_CU_ERR_INVALID_PARAMETER, result.code,
94+
TEST_ASSERT_EQUAL_INT_MESSAGE(ARM_UC_CU_ERR_INVALID_PARAMETER, result,
9595
"bootloader hmac returned wrong error code");
9696

9797
result = ARM_UC_cryptoHMACSHA256(NULL, &input_buffer, NULL);
98-
TEST_ASSERT_EQUAL_INT_MESSAGE(ARM_UC_CU_ERR_INVALID_PARAMETER, result.code,
98+
TEST_ASSERT_EQUAL_INT_MESSAGE(ARM_UC_CU_ERR_INVALID_PARAMETER, result,
9999
"bootloader hmac returned wrong error code");
100100

101101
result = ARM_UC_cryptoHMACSHA256(NULL, &input_buffer, &output_buffer);
102-
TEST_ASSERT_EQUAL_INT_MESSAGE(ARM_UC_CU_ERR_INVALID_PARAMETER, result.code,
102+
TEST_ASSERT_EQUAL_INT_MESSAGE(ARM_UC_CU_ERR_INVALID_PARAMETER, result,
103103
"bootloader hmac returned wrong error code");
104104

105105
result = ARM_UC_cryptoHMACSHA256(NULL, NULL, &output_buffer);
106-
TEST_ASSERT_EQUAL_INT_MESSAGE(ARM_UC_CU_ERR_INVALID_PARAMETER, result.code,
106+
TEST_ASSERT_EQUAL_INT_MESSAGE(ARM_UC_CU_ERR_INVALID_PARAMETER, result,
107107
"bootloader hmac returned wrong error code");
108108

109109
/**
@@ -114,35 +114,35 @@ static control_t test_unit(const size_t call_count)
114114
output_buffer.ptr = hash_bootloader;
115115

116116
result = ARM_UC_cryptoHMACSHA256(NULL, NULL, NULL);
117-
TEST_ASSERT_EQUAL_INT_MESSAGE(ARM_UC_CU_ERR_INVALID_PARAMETER, result.code,
117+
TEST_ASSERT_EQUAL_INT_MESSAGE(ARM_UC_CU_ERR_INVALID_PARAMETER, result,
118118
"bootloader hmac returned wrong error code");
119119

120120
result = ARM_UC_cryptoHMACSHA256(&key_buffer, NULL, NULL);
121-
TEST_ASSERT_EQUAL_INT_MESSAGE(ARM_UC_CU_ERR_INVALID_PARAMETER, result.code,
121+
TEST_ASSERT_EQUAL_INT_MESSAGE(ARM_UC_CU_ERR_INVALID_PARAMETER, result,
122122
"bootloader hmac returned wrong error code");
123123

124124
result = ARM_UC_cryptoHMACSHA256(&key_buffer, &input_buffer, NULL);
125-
TEST_ASSERT_EQUAL_INT_MESSAGE(ARM_UC_CU_ERR_INVALID_PARAMETER, result.code,
125+
TEST_ASSERT_EQUAL_INT_MESSAGE(ARM_UC_CU_ERR_INVALID_PARAMETER, result,
126126
"bootloader hmac returned wrong error code");
127127

128128
result = ARM_UC_cryptoHMACSHA256(&key_buffer, &input_buffer, &output_buffer);
129-
TEST_ASSERT_EQUAL_INT_MESSAGE(ARM_UC_CU_ERR_INVALID_PARAMETER, result.code,
129+
TEST_ASSERT_EQUAL_INT_MESSAGE(ARM_UC_CU_ERR_INVALID_PARAMETER, result,
130130
"bootloader hmac returned wrong error code");
131131

132132
result = ARM_UC_cryptoHMACSHA256(&key_buffer, NULL, &output_buffer);
133-
TEST_ASSERT_EQUAL_INT_MESSAGE(ARM_UC_CU_ERR_INVALID_PARAMETER, result.code,
133+
TEST_ASSERT_EQUAL_INT_MESSAGE(ARM_UC_CU_ERR_INVALID_PARAMETER, result,
134134
"bootloader hmac returned wrong error code");
135135

136136
result = ARM_UC_cryptoHMACSHA256(NULL, &input_buffer, NULL);
137-
TEST_ASSERT_EQUAL_INT_MESSAGE(ARM_UC_CU_ERR_INVALID_PARAMETER, result.code,
137+
TEST_ASSERT_EQUAL_INT_MESSAGE(ARM_UC_CU_ERR_INVALID_PARAMETER, result,
138138
"bootloader hmac returned wrong error code");
139139

140140
result = ARM_UC_cryptoHMACSHA256(NULL, &input_buffer, &output_buffer);
141-
TEST_ASSERT_EQUAL_INT_MESSAGE(ARM_UC_CU_ERR_INVALID_PARAMETER, result.code,
141+
TEST_ASSERT_EQUAL_INT_MESSAGE(ARM_UC_CU_ERR_INVALID_PARAMETER, result,
142142
"bootloader hmac returned wrong error code");
143143

144144
result = ARM_UC_cryptoHMACSHA256(NULL, NULL, &output_buffer);
145-
TEST_ASSERT_EQUAL_INT_MESSAGE(ARM_UC_CU_ERR_INVALID_PARAMETER, result.code,
145+
TEST_ASSERT_EQUAL_INT_MESSAGE(ARM_UC_CU_ERR_INVALID_PARAMETER, result,
146146
"bootloader hmac returned wrong error code");
147147

148148
/**
@@ -154,36 +154,36 @@ static control_t test_unit(const size_t call_count)
154154

155155
/* ARM_UC_CU_ERR_INVALID_PARAMETER */
156156
result = ARM_UC_cryptoHMACSHA256(NULL, NULL, NULL);
157-
TEST_ASSERT_EQUAL_INT_MESSAGE(ARM_UC_CU_ERR_INVALID_PARAMETER, result.code,
157+
TEST_ASSERT_EQUAL_INT_MESSAGE(ARM_UC_CU_ERR_INVALID_PARAMETER, result,
158158
"bootloader hmac returned wrong error code");
159159

160160
result = ARM_UC_cryptoHMACSHA256(&key_buffer, NULL, NULL);
161-
TEST_ASSERT_EQUAL_INT_MESSAGE(ARM_UC_CU_ERR_INVALID_PARAMETER, result.code,
161+
TEST_ASSERT_EQUAL_INT_MESSAGE(ARM_UC_CU_ERR_INVALID_PARAMETER, result,
162162
"bootloader hmac returned wrong error code");
163163

164164
result = ARM_UC_cryptoHMACSHA256(&key_buffer, &input_buffer, NULL);
165-
TEST_ASSERT_EQUAL_INT_MESSAGE(ARM_UC_CU_ERR_INVALID_PARAMETER, result.code,
165+
TEST_ASSERT_EQUAL_INT_MESSAGE(ARM_UC_CU_ERR_INVALID_PARAMETER, result,
166166
"bootloader hmac returned wrong error code");
167167

168168
result = ARM_UC_cryptoHMACSHA256(&key_buffer, NULL, &output_buffer);
169-
TEST_ASSERT_EQUAL_INT_MESSAGE(ARM_UC_CU_ERR_INVALID_PARAMETER, result.code,
169+
TEST_ASSERT_EQUAL_INT_MESSAGE(ARM_UC_CU_ERR_INVALID_PARAMETER, result,
170170
"bootloader hmac returned wrong error code");
171171

172172
result = ARM_UC_cryptoHMACSHA256(NULL, &input_buffer, NULL);
173-
TEST_ASSERT_EQUAL_INT_MESSAGE(ARM_UC_CU_ERR_INVALID_PARAMETER, result.code,
173+
TEST_ASSERT_EQUAL_INT_MESSAGE(ARM_UC_CU_ERR_INVALID_PARAMETER, result,
174174
"bootloader hmac returned wrong error code");
175175

176176
result = ARM_UC_cryptoHMACSHA256(NULL, &input_buffer, &output_buffer);
177-
TEST_ASSERT_EQUAL_INT_MESSAGE(ARM_UC_CU_ERR_INVALID_PARAMETER, result.code,
177+
TEST_ASSERT_EQUAL_INT_MESSAGE(ARM_UC_CU_ERR_INVALID_PARAMETER, result,
178178
"bootloader hmac returned wrong error code");
179179

180180
result = ARM_UC_cryptoHMACSHA256(NULL, NULL, &output_buffer);
181-
TEST_ASSERT_EQUAL_INT_MESSAGE(ARM_UC_CU_ERR_INVALID_PARAMETER, result.code,
181+
TEST_ASSERT_EQUAL_INT_MESSAGE(ARM_UC_CU_ERR_INVALID_PARAMETER, result,
182182
"bootloader hmac returned wrong error code");
183183

184184
/* ERR_NONE */
185185
result = ARM_UC_cryptoHMACSHA256(&key_buffer, &input_buffer, &output_buffer);
186-
TEST_ASSERT_EQUAL_INT_MESSAGE(ERR_NONE, result.code, "valid input should have succeeded");
186+
TEST_ASSERT_EQUAL_INT_MESSAGE(ERR_NONE, result, "valid input should have succeeded");
187187

188188
/**
189189
* Test key length.
@@ -195,12 +195,12 @@ static control_t test_unit(const size_t call_count)
195195

196196
/* max key size */
197197
result = ARM_UC_cryptoHMACSHA256(&key_buffer, &input_buffer, &output_buffer);
198-
TEST_ASSERT_EQUAL_INT_MESSAGE(ERR_NONE, result.code, "valid input should have succeeded");
198+
TEST_ASSERT_EQUAL_INT_MESSAGE(ERR_NONE, result, "valid input should have succeeded");
199199

200200
/* max key size plus 1 */
201201
key_buffer.size = SHA256_BLOCK_SIZE + 1;
202202
result = ARM_UC_cryptoHMACSHA256(&key_buffer, &input_buffer, &output_buffer);
203-
TEST_ASSERT_EQUAL_INT_MESSAGE(ARM_UC_CU_ERR_INVALID_PARAMETER, result.code, "too large key size should have failed");
203+
TEST_ASSERT_EQUAL_INT_MESSAGE(ARM_UC_CU_ERR_INVALID_PARAMETER, result, "too large key size should have failed");
204204

205205
return CaseNext;
206206
}
@@ -277,7 +277,7 @@ static control_t test_nist_vectors(const size_t call_count)
277277
/**
278278
* Use test vectors on ARM_UC_cryptoHMACSHA256.
279279
*/
280-
arm_uc_error_t result;
280+
int32_t result;
281281
arm_uc_buffer_t key_buffer = { 0 };
282282
arm_uc_buffer_t input_buffer = { 0 };
283283
arm_uc_buffer_t output_buffer = { 0 };
@@ -296,7 +296,7 @@ static control_t test_nist_vectors(const size_t call_count)
296296

297297
memset(hash_bootloader, 0, HASH_SIZE);
298298
result = ARM_UC_cryptoHMACSHA256(&key_buffer, &input_buffer, &output_buffer);
299-
TEST_ASSERT_EQUAL_INT_MESSAGE(ERR_NONE, result.code, "bootloader hmac failed");
299+
TEST_ASSERT_EQUAL_INT_MESSAGE(ERR_NONE, result, "bootloader hmac failed");
300300
TEST_ASSERT_EQUAL_INT_MESSAGE(HASH_SIZE, output_buffer.size, "bootloader incorrect hash length");
301301
TEST_ASSERT_EQUAL_UINT8_ARRAY_MESSAGE(nist_cavs_1_hmac, hash_bootloader, nist_cavs_1_hmac_len,
302302
"bootloader hmac incorrect");
@@ -318,7 +318,7 @@ static control_t test_nist_vectors(const size_t call_count)
318318

319319
memset(hash_bootloader, 0, HASH_SIZE);
320320
result = ARM_UC_cryptoHMACSHA256(&key_buffer, &input_buffer, &output_buffer);
321-
TEST_ASSERT_EQUAL_INT_MESSAGE(ERR_NONE, result.code, "bootloader hmac failed");
321+
TEST_ASSERT_EQUAL_INT_MESSAGE(ERR_NONE, result, "bootloader hmac failed");
322322
TEST_ASSERT_EQUAL_INT_MESSAGE(HASH_SIZE, output_buffer.size, "bootloader incorrect hash length");
323323
TEST_ASSERT_EQUAL_UINT8_ARRAY_MESSAGE(nist_cavs_2_hmac, hash_bootloader, nist_cavs_2_hmac_len,
324324
"bootloader hmac incorrect");
@@ -340,7 +340,7 @@ static control_t test_nist_vectors(const size_t call_count)
340340

341341
memset(hash_bootloader, 0, HASH_SIZE);
342342
result = ARM_UC_cryptoHMACSHA256(&key_buffer, &input_buffer, &output_buffer);
343-
TEST_ASSERT_EQUAL_INT_MESSAGE(ERR_NONE, result.code, "bootloader hmac failed");
343+
TEST_ASSERT_EQUAL_INT_MESSAGE(ERR_NONE, result, "bootloader hmac failed");
344344
TEST_ASSERT_EQUAL_INT_MESSAGE(HASH_SIZE, output_buffer.size, "bootloader incorrect hash length");
345345
TEST_ASSERT_EQUAL_UINT8_ARRAY_MESSAGE(nist_cavs_3_hmac, hash_bootloader, nist_cavs_3_hmac_len,
346346
"bootloader hmac incorrect");
@@ -362,7 +362,7 @@ static control_t test_nist_vectors(const size_t call_count)
362362

363363
memset(hash_bootloader, 0, HASH_SIZE);
364364
result = ARM_UC_cryptoHMACSHA256(&key_buffer, &input_buffer, &output_buffer);
365-
TEST_ASSERT_EQUAL_INT_MESSAGE(ERR_NONE, result.code, "bootloader hmac failed");
365+
TEST_ASSERT_EQUAL_INT_MESSAGE(ERR_NONE, result, "bootloader hmac failed");
366366
TEST_ASSERT_EQUAL_INT_MESSAGE(HASH_SIZE, output_buffer.size, "bootloader incorrect hash length");
367367
TEST_ASSERT_EQUAL_UINT8_ARRAY_MESSAGE(nist_cavs_4_hmac, hash_bootloader, nist_cavs_4_hmac_len,
368368
"bootloader hmac incorrect");
@@ -384,7 +384,7 @@ static control_t test_nist_vectors(const size_t call_count)
384384

385385
memset(hash_bootloader, 0, HASH_SIZE);
386386
result = ARM_UC_cryptoHMACSHA256(&key_buffer, &input_buffer, &output_buffer);
387-
TEST_ASSERT_EQUAL_INT_MESSAGE(ERR_NONE, result.code, "bootloader hmac failed");
387+
TEST_ASSERT_EQUAL_INT_MESSAGE(ERR_NONE, result, "bootloader hmac failed");
388388
TEST_ASSERT_EQUAL_INT_MESSAGE(HASH_SIZE, output_buffer.size, "bootloader incorrect hash length");
389389
TEST_ASSERT_EQUAL_UINT8_ARRAY_MESSAGE(nist_cavs_5_hmac, hash_bootloader, nist_cavs_5_hmac_len,
390390
"bootloader hmac incorrect");
@@ -406,7 +406,7 @@ static control_t test_nist_vectors(const size_t call_count)
406406

407407
memset(hash_bootloader, 0, HASH_SIZE);
408408
result = ARM_UC_cryptoHMACSHA256(&key_buffer, &input_buffer, &output_buffer);
409-
TEST_ASSERT_EQUAL_INT_MESSAGE(ERR_NONE, result.code, "bootloader hmac failed");
409+
TEST_ASSERT_EQUAL_INT_MESSAGE(ERR_NONE, result, "bootloader hmac failed");
410410
TEST_ASSERT_EQUAL_INT_MESSAGE(HASH_SIZE, output_buffer.size, "bootloader incorrect hash length");
411411
TEST_ASSERT_EQUAL_UINT8_ARRAY_MESSAGE(nist_cavs_6_hmac, hash_bootloader, nist_cavs_6_hmac_len,
412412
"bootloader hmac incorrect");
@@ -465,8 +465,8 @@ static control_t test_random_vector(const size_t call_count)
465465
output_buffer.size_max = HASH_SIZE;
466466
output_buffer.ptr = hash_bootloader;
467467

468-
arm_uc_error_t result = ARM_UC_cryptoHMACSHA256(&key_buffer, &input_buffer, &output_buffer);
469-
TEST_ASSERT_EQUAL_INT_MESSAGE(ERR_NONE, result.code, "bootloader hmac failed");
468+
int32_t result = ARM_UC_cryptoHMACSHA256(&key_buffer, &input_buffer, &output_buffer);
469+
TEST_ASSERT_EQUAL_INT_MESSAGE(ERR_NONE, result, "bootloader hmac failed");
470470
TEST_ASSERT_EQUAL_INT_MESSAGE(HASH_SIZE, output_buffer.size, "incorrect hash length");
471471

472472
printf("%" PRIu32 ": ", output_buffer.size);

modules/metadata-header/source/arm_uc_crypto_hmac_mbedtls.c

+3-7
Original file line numberDiff line numberDiff line change
@@ -63,13 +63,11 @@
6363
* ERR_NONE on success.
6464
* ARM_UC_CU_ERR_INVALID_PARAMETER on failure.
6565
*/
66-
arm_uc_error_t ARM_UC_cryptoHMACSHA256(arm_uc_buffer_t *key,
66+
int32_t ARM_UC_cryptoHMACSHA256(arm_uc_buffer_t *key,
6767
arm_uc_buffer_t *input,
6868
arm_uc_buffer_t *output)
6969
{
70-
arm_uc_error_t result = (arm_uc_error_t) {
71-
ARM_UC_CU_ERR_INVALID_PARAMETER
72-
};
70+
int32_t result = ARM_UC_CU_ERR_INVALID_PARAMETER;
7371

7472
if (key && key->ptr &&
7573
(key->size <= ARM_UC_SHA256_INTERNAL_BLOCK_SIZE) &&
@@ -151,9 +149,7 @@ arm_uc_error_t ARM_UC_cryptoHMACSHA256(arm_uc_buffer_t *key,
151149

152150
output->size = ARM_UC_SHA256_SIZE;
153151

154-
result = (arm_uc_error_t) {
155-
ERR_NONE
156-
};
152+
result = ERR_NONE;
157153
}
158154
}
159155
}

0 commit comments

Comments
 (0)