Skip to content

Commit e73c808

Browse files
author
Arto Kinnunen
authored
Merge pull request #2460 from ARMmbed/sync_with_mbed_os
Sync from Mbed OS
2 parents 7994d95 + f8813e2 commit e73c808

File tree

1 file changed

+14
-10
lines changed

1 file changed

+14
-10
lines changed

source/Security/protocols/sec_prot_lib.c

Lines changed: 14 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -373,19 +373,23 @@ uint8_t *sec_prot_lib_message_handle(uint8_t *ptk, uint16_t *kde_len, eapol_pdu_
373373
uint8_t *kde = ns_dyn_mem_temporary_alloc(key_data_len);
374374
*kde_len = key_data_len;
375375

376-
if (eapol_pdu->msg.key.key_information.encrypted_key_data) {
377-
size_t output_len = eapol_pdu->msg.key.key_data_length;
378-
if (nist_aes_key_wrap(0, &ptk[KEK_INDEX], 128, key_data, key_data_len, kde, &output_len) < 0 || output_len != (size_t) key_data_len - 8) {
379-
tr_error("Decrypt failed");
380-
ns_dyn_mem_free(kde);
381-
return NULL;
376+
if (kde) {
377+
if (eapol_pdu->msg.key.key_information.encrypted_key_data) {
378+
size_t output_len = eapol_pdu->msg.key.key_data_length;
379+
if (nist_aes_key_wrap(0, &ptk[KEK_INDEX], 128, key_data, key_data_len, kde, &output_len) < 0 || output_len != (size_t) key_data_len - 8) {
380+
tr_error("Decrypt failed");
381+
ns_dyn_mem_free(kde);
382+
return NULL;
383+
}
384+
*kde_len = output_len;
385+
} else {
386+
memcpy(kde, key_data, *kde_len);
382387
}
383-
*kde_len = output_len;
384-
} else {
385-
memcpy(kde, key_data, *kde_len);
388+
389+
return kde;
386390
}
387391

388-
return kde;
392+
return NULL;
389393
}
390394

391395
int8_t sec_prot_lib_gtk_read(uint8_t *kde, uint16_t kde_len, sec_prot_keys_t *sec_keys)

0 commit comments

Comments
 (0)