PEAP: Verify peap_prfplus() result
This function can fail in theory since the SHA-1 functions are allowed to return an error. While this does not really happen in practice (we would not get this far if SHA-1 does not work), it is cleaner to include the error handling here to keep static analyzers happier. [Bug 421] Signed-hostap: Jouni Malinen <j@w1.fi>
This commit is contained in:
parent
b6c8df695c
commit
3724ddc0c1
4 changed files with 32 additions and 19 deletions
|
@ -285,8 +285,10 @@ static int eap_peap_derive_cmk(struct eap_sm *sm, struct eap_peap_data *data)
|
|||
* in the end of the label just before ISK; is that just a typo?)
|
||||
*/
|
||||
wpa_hexdump_key(MSG_DEBUG, "EAP-PEAP: TempKey", tk, 40);
|
||||
peap_prfplus(data->peap_version, tk, 40, "Inner Methods Compound Keys",
|
||||
isk, sizeof(isk), imck, sizeof(imck));
|
||||
if (peap_prfplus(data->peap_version, tk, 40,
|
||||
"Inner Methods Compound Keys",
|
||||
isk, sizeof(isk), imck, sizeof(imck)) < 0)
|
||||
return -1;
|
||||
wpa_hexdump_key(MSG_DEBUG, "EAP-PEAP: IMCK (IPMKj)",
|
||||
imck, sizeof(imck));
|
||||
|
||||
|
@ -1247,9 +1249,12 @@ static u8 * eap_peap_getKey(struct eap_sm *sm, void *priv, size_t *len)
|
|||
* termination for this label while the one used for deriving
|
||||
* IPMK|CMK did not use null termination.
|
||||
*/
|
||||
peap_prfplus(data->peap_version, data->ipmk, 40,
|
||||
"Session Key Generating Function",
|
||||
(u8 *) "\00", 1, csk, sizeof(csk));
|
||||
if (peap_prfplus(data->peap_version, data->ipmk, 40,
|
||||
"Session Key Generating Function",
|
||||
(u8 *) "\00", 1, csk, sizeof(csk)) < 0) {
|
||||
os_free(key);
|
||||
return NULL;
|
||||
}
|
||||
wpa_hexdump_key(MSG_DEBUG, "EAP-PEAP: CSK", csk, sizeof(csk));
|
||||
os_memcpy(key, csk, EAP_TLS_KEY_LEN);
|
||||
wpa_hexdump(MSG_DEBUG, "EAP-PEAP: Derived key",
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue