mirror of https://github.com/ARMmbed/mbed-os.git
Merge pull request #13618 from felipeLeast/invalid_memory
nanostack: fix invalid memory access on memcpypull/13666/head
commit
a7978d41c2
|
@ -373,19 +373,23 @@ uint8_t *sec_prot_lib_message_handle(uint8_t *ptk, uint16_t *kde_len, eapol_pdu_
|
|||
uint8_t *kde = ns_dyn_mem_temporary_alloc(key_data_len);
|
||||
*kde_len = key_data_len;
|
||||
|
||||
if (eapol_pdu->msg.key.key_information.encrypted_key_data) {
|
||||
size_t output_len = eapol_pdu->msg.key.key_data_length;
|
||||
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) {
|
||||
tr_error("Decrypt failed");
|
||||
ns_dyn_mem_free(kde);
|
||||
return NULL;
|
||||
if (kde) {
|
||||
if (eapol_pdu->msg.key.key_information.encrypted_key_data) {
|
||||
size_t output_len = eapol_pdu->msg.key.key_data_length;
|
||||
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) {
|
||||
tr_error("Decrypt failed");
|
||||
ns_dyn_mem_free(kde);
|
||||
return NULL;
|
||||
}
|
||||
*kde_len = output_len;
|
||||
} else {
|
||||
memcpy(kde, key_data, *kde_len);
|
||||
}
|
||||
*kde_len = output_len;
|
||||
} else {
|
||||
memcpy(kde, key_data, *kde_len);
|
||||
|
||||
return kde;
|
||||
}
|
||||
|
||||
return kde;
|
||||
return NULL;
|
||||
}
|
||||
|
||||
int8_t sec_prot_lib_gtk_read(uint8_t *kde, uint16_t kde_len, sec_prot_keys_t *sec_keys)
|
||||
|
|
Loading…
Reference in New Issue